K8s學習筆記(一):Kubernetes架構-原理-組件

Kubernetes(簡稱 K8s)是一款開源的容器編排平臺,核心目標是實現容器化應用的自動化部署、擴展、故障恢復和運維管理。其設計遵循 “主從架構”(Control Plane + Node),組件分工明確,通過 “聲明式 API” 和 “控制器模式” 實現集群狀態的自動調諧。

一、Kubernetes 整體架構

? ? K8s 集群由兩部分組成:控制平面(Control Plane)?和工作節點(Node)。控制平面是集群的 “大腦”,負責決策;工作節點是 “手腳”,負責運行容器化應用。

角色核心作用部署建議
控制平面(CP)管理集群狀態(如 Pod 調度、副本數量、故障恢復)生產環境需多節點高可用部署
工作節點(Node)運行容器化應用,執行控制平面下發的任務數量根據業務負載擴展

二、核心組件

? ? K8s 的功能依賴于多個組件的協同工作,組件分為 “控制平面組件” 和 “工作節點組件” 兩類,部分組件還需依賴外部插件(如容器運行時、網絡插件)。

1. 控制平面組件(Control Plane Components)

? ? 控制平面組件通常部署在專用的控制節點上,負責集群的 “決策與管理”。

組件名稱核心功能關鍵特性
kube-apiserver集群的 “統一入口”,所有操作(如創建 Pod、查詢狀態)都通過它執行- 唯一與 etcd 交互的組件(讀寫集群狀態)
- 提供 RESTful API,支持認證 / 授權
- 是組件間通信的 “中樞”(其他組件不直接交互,均通過 apiserver)
etcd分布式鍵值(Key-Value)數據庫,存儲集群的所有狀態信息(如 Pod 配置、Service 規則)- 強一致性(基于 Raft 協議),確保集群狀態可靠
- 生產環境需 3/5 節點集群部署(高可用)
- 僅 kube-apiserver 可直接讀寫 etcd
kube-scheduler負責將 “未調度的 Pod” 分配到合適的工作節點(Node)- 調度依據:資源需求(CPU / 內存)、親和性 / 反親和性、污點 / 容忍、節點負載等
- 僅負責 “調度決策”,不執行 Pod 啟動(由 kubelet 執行)
kube-controller-manager運行各類 “控制器”,監控集群狀態,確保 “實際狀態” 向 “期望狀態” 對齊(調諧)內置核心控制器:
- 副本控制器(ReplicaSet):維持 Pod 副本數
- 節點控制器(NodeController):監控節點健康
- 部署控制器(Deployment):管理 Pod 升級
- 服務控制器(ServiceController):關聯 Pod 與 Service
cloud-controller-manager(可選)對接云服務商 API(如 AWS、阿里云),實現云資源聯動(如負載均衡、存儲)僅在 “云環境” 中部署,物理機 / 私有集群無需此組件

2. 工作節點組件(Node Components)

每個工作節點(Node)都必須部署以下組件,負責 “執行控制平面的任務” 和 “管理本地容器”。

組件名稱核心功能依賴關系
kubelet監控本節點的 Pod,確保 Pod 內的容器正常運行(啟動、重啟、停止)- 從 apiserver 獲取 Pod 的 “期望狀態”(如容器鏡像、資源限制)
- 調用 “容器運行時”(如 containerd)執行容器操作
- 定期向 apiserver 上報本節點和 Pod 的狀態
kube-proxy實現 K8s 的 “服務(Service)” 網絡功能,維護節點的網絡規則- 為 Service 分配 “虛擬 IP(ClusterIP)”,并將流量轉發到后端 Pod
- 支持兩種模式:
1. iptables 模式(默認,輕量):通過 iptables 規則實現轉發
2. ipvs 模式(高性能):適合大規模集群
- 確保 Pod 間、Pod 與外部的網絡連通性
容器運行時(CRI)實際運行容器的軟件,需符合 K8s 的 “容器運行時接口(CRI)”常用選項:
- containerd(目前主流,Docker 已棄用直接支持,需通過 containerd)
- CRI-O(專為 K8s 設計,輕量)
- Docker(需額外安裝 cri-dockerd 適配器,逐步淘汰)

3. 必備插件(Add-ons)

部分核心功能需通過插件實現,控制平面和節點均需依賴:

  • 網絡插件(CNI):實現 Pod 間跨節點通信(K8s 本身不提供網絡功能),常用插件如 Calico、Flannel、Weave Net。

  • DNS 插件(CoreDNS):為集群內的 Pod 和 Service 提供 DNS 解析(如通過 Service 名稱訪問 Pod),是集群默認組件。

  • 存儲插件(CSI):對接持久化存儲(如云硬盤、NAS),實現 Pod 存儲持久化(容器存儲默認臨時,刪除 Pod 后數據丟失),常用插件如 AWS EBS CSI、阿里云 CSI。

三、Kubernetes 核心工作原理

K8s 的核心邏輯是 “聲明式調諧”:用戶通過 API 聲明 “期望的集群狀態”(如 “部署 3 個 Nginx 副本”),K8s 自動將 “實際狀態” 調整為 “期望狀態”,無需用戶手動操作。

1. 核心模式:聲明式 API + 控制器模式

這是 K8s 與傳統 “命令式工具”(如 Docker Compose)的本質區別:

  • 聲明式 API:用戶只需定義 “最終要什么”(如kubectl apply -f nginx-deploy.yaml),無需關心 “如何實現”;K8s 會記錄這個 “期望狀態” 到 etcd。

  • 控制器模式:每個控制器(如 Deployment 控制器)通過 apiserver “監聽” 集群狀態,對比 “期望狀態” 和 “實際狀態”:

    • 若實際狀態 ≠ 期望狀態(如 Pod 副本數不足 3 個),控制器會觸發 “調諧操作”(如創建新 Pod);

    • 若實際狀態 = 期望狀態,控制器則 “靜默監控”,不做操作。

2. 典型工作流程:部署一個 Nginx 應用

以 “通過 Deployment 部署 3 個 Nginx 副本” 為例,理解 K8s 組件的協同邏輯:

  1. 用戶提交請求:通過kubectl apply -f nginx-deploy.yaml向 apiserver 發送 “創建 Deployment” 的請求,指定 “3 個副本”。

  2. apiserver 處理:驗證請求合法性后,將 Deployment 的 “期望狀態”(3 副本)存入 etcd,并返回 “創建成功” 給用戶。

  3. 控制器調諧:Deployment 控制器通過 apiserver 監聽 Deployment 資源,發現 “期望 3 副本” 但 “實際 0 副本”,于是自動創建一個 ReplicaSet(負責維護副本數),并將 ReplicaSet 的狀態存入 etcd。

  4. 調度 Pod:ReplicaSet 控制器監聽 ReplicaSet 資源,發現 “期望 3 副本”,向 apiserver 請求創建 3 個 Pod。kube-scheduler 監聽 “未調度的 Pod”,根據節點資源、親和性等規則,將 3 個 Pod 分別調度到 3 個不同的 Node 上,并將 Pod 的 “調度結果”(綁定到某個 Node)存入 etcd。

  5. 啟動容器:每個 Node 上的 kubelet 通過 apiserver 監聽 “分配給本節點的 Pod”,調用 containerd 拉取 Nginx 鏡像,啟動容器,并定期向 apiserver 上報 Pod 狀態(如 “Running”)。

  6. 網絡訪問:用戶創建 Service(kubectl expose deployment nginx-deploy --port=80),kube-proxy 在每個 Node 上維護 iptables 規則,為 Service 分配 ClusterIP(如 10.96.0.10),并將訪問 ClusterIP 的流量轉發到 3 個 Nginx Pod,實現負載均衡。

  7. 故障自愈:若其中一個 Nginx Pod 意外崩潰(狀態變為 “CrashLoopBackOff”),ReplicaSet 控制器通過 apiserver 發現 “實際 2 副本 < 期望 3 副本”,立即請求創建 1 個新 Pod,kube-scheduler 重新調度,kubelet 啟動新容器,最終恢復 3 副本狀態。

3. 核心概念:Pod 與 Service 的關系

  • Pod:K8s 的最小部署單元,一個 Pod 可包含 1 個或多個容器(如 “應用容器 + 日志收集容器”),容器間共享網絡和存儲。
    ? 注意:Pod 是 “臨時的”,會因節點故障、調度更新等原因銷毀重建,IP 地址會變化,無法直接作為固定訪問入口。
  • Service:為 “一組相同功能的 Pod” 提供固定訪問入口(如 ClusterIP、NodePort),通過 “標簽選擇器”(Label Selector)關聯 Pod。即使 Pod 銷毀重建,Service 的 IP 和端口不變,確保外部訪問不中斷。

四、關鍵輔助概念

理解以下概念能更好地掌握 K8s 的使用場景:

  1. Namespace:實現 “資源隔離”,將集群劃分為多個虛擬子集群(如 “開發環境”“測試環境”“生產環境”),避免不同環境的資源沖突。

  2. ConfigMap/Secret:管理應用配置:

    • ConfigMap:存儲明文配置(如數據庫地址、端口);

    • Secret:存儲敏感信息(如密碼、Token),會進行 Base64 編碼(非加密,需配合外部加密工具如 Vault 實現安全存儲)。

  3. Volume:解決 “容器存儲臨時化” 問題,將外部存儲(如本地磁盤、云硬盤、NAS)掛載到 Pod 內,實現數據持久化(Pod 刪除后數據不丟失)。

五、總結

K8s 的架構和原理圍繞 “自動化、高可用、可擴展” 設計:

  • 架構層面:控制平面決策,工作節點執行,組件間通過 apiserver 通信,etcd 保障狀態可靠;

  • 原理層面:通過 “聲明式 API + 控制器模式” 實現自愈,無需人工干預;

  • 核心價值:屏蔽容器底層的復雜性,讓用戶專注于應用本身,而非基礎設施運維,支撐大規模容器集群的穩定運行。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/97860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/97860.shtml
英文地址,請注明出處:http://en.pswp.cn/web/97860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

ensp配置學習筆記 比賽版 vlan 靜態路由 ospf bgp dhcp

學習配置VLAN 虛擬局域網&#xff0c;目的讓兩臺在同一網段的設備&#xff0c;在交換機中訪問。基礎指令&#xff1a;sys 進入系統 sysname R1 修改交換機名字為R1 display cur 查看數據、端口等交換機信息 &#xff08;在端口中&#xff0c;可以直接display this 可以直接看…

倉頡編程語言青少年基礎教程:enum(枚舉)類型和Option類型

倉頡編程語言青少年基礎教程&#xff1a;enum&#xff08;枚舉&#xff09;類型和Option類型enum 和 Option 各自解決一類“語義級”問題&#xff1a;enum 讓“取值只在有限集合內”的約束從注釋變成編譯器強制&#xff1b;Option 讓“值可能不存在”的語義顯式化。enum類型enu…

javaEE-Spring IOCDI

目錄 1、什么是Spring&#xff1a; 2.什么是IoC: 3. 什么是控制反轉呢? 4.IoC容器具備以下優點: 5.DI是什么&#xff1a; 依賴注?方法&#xff1a; 三種注入方法的優缺點&#xff1a; Autowired注解注入存在的問題&#xff1a; Autowired和Resource的區別&#xff…

TensorFlow Lite 全面解析:端側部署方案與PyTorch Mobile深度對比

1 TensorFlow Lite 基礎介紹 TensorFlow Lite (TFLite) 是 Google 為移動設備&#xff08;Android, iOS&#xff09;、微控制器&#xff08;Microcontrollers&#xff09;和其他嵌入式設備&#xff08;如 Raspberry Pi&#xff09;開發的輕量級深度學習推理框架。它的核心目標是…

mapbox進階,使用jsts實現平角緩沖區

????? 主頁: gis分享者 ????? 感謝各位大佬 點贊?? 收藏? 留言?? 加關注?! ????? 收錄于專欄:mapbox 從入門到精通 文章目錄 一、??前言 1.1 ??mapboxgl.Map 地圖對象 1.2 ??mapboxgl.Map style屬性 1.3 ??jsts myBufferOp 緩沖區生成對對象 …

linux裝好顯卡后如何檢查

背景&#xff1a;客戶通知裝好了顯卡&#xff0c;我們去機器上查看一下一. 使用到的命令 watch -n 1 nvidia-smi 可實時查看gpu的使用率nvidia-smi 之查看一次 二、查看內存和顯存 內存使用命令 free -h,顯存使用 nvidia-smi 這只是查看的navidia, 其他品牌的會不一樣

人工智能深度學習——卷積神經網絡(CNN)

一、圖像卷積運算 對圖像矩陣與濾波器矩陣進行對應相乘再求和運算&#xff0c;轉化得到新的矩陣。 作用&#xff1a;快速定位圖像中某些邊緣特征 英文&#xff1a;convolution&#xff08;CNN&#xff09;池化層實現維度縮減 池化&#xff1a;按照一個固定規則對圖像矩陣進行處…

SaaS 建站從 0 到 1 教程:Vue 動態域名 + 后端子域名管理 + Nginx 配置

SaaS 建站從 0 到 1 教程&#xff1a;Vue 動態域名 后端子域名管理 Nginx 配置 一、什么是 SaaS 建站&#xff1f; SaaS&#xff08;Software as a Service&#xff09;建站&#xff0c;就是通過一套統一的系統&#xff0c;支持用戶在線注冊、綁定域名、快速生成專屬網站。…

關于神經網絡中回歸的概念

神經網絡中的回歸詳解 引言 神經網絡&#xff08;NeuralNetworks&#xff09;是一種強大的機器學習模型&#xff0c;可用于分類和回歸任務。本文聚焦于神經網絡中的回歸&#xff08;Regression&#xff09;&#xff0c;即預測連續輸出值&#xff08;如房價、溫度&#xff09;。…

JAVASCRIPT 前端數據庫-V9--仙盟數據庫架構-—仙盟創夢IDE

老版本 在v1 版本中我們講述了 基礎版的應用JAVASCRIPT 前端數據庫-V1--仙盟數據庫架構-—-—仙盟創夢IDE-CSDN博客接下載我們做一個更復雜的的其他場景由于&#xff0c;V1查詢字段必須 id接下來我們修改了了代碼JAVASCRIPT 前端數據庫-V2--仙盟數據庫架構-—-—仙盟創夢IDE-CS…

k8s核心資料基本操作

NamespaceNamespace是kubernetes系統中的一種非常重要資源&#xff0c;它的主要作用是用來實現多套環境的資源隔離或者多租戶的資源隔離。默認情況下&#xff0c;kubernetes集群中的所有的Pod都是可以相互訪問的。但是在實際中&#xff0c;可能不想讓兩個Pod之間進行互相的訪問…

PostgreSQL——分區表

分區表一、分區表的意義二、傳統分區表2.1、繼承表2.2、創建分區表2.3、使用分區表2.4、查詢父表還是子表2.5、constraint_exclusion參數2.6、添加分區2.7、刪除分區2.8、分區表相關查詢2.9、傳統分區表注意事項三、內置分區表3.1、創建分區表3.2、使用分區表3.3、內置分區表原…

Linux任務調度全攻略

Linux下的任務調度分為兩類&#xff0c;系統任務調度和用戶任務調度。系統任務調度&#xff1a;系統周期性所要執行的工作&#xff0c;比如寫緩存數據到硬盤、日志清理等。在/etc目錄下有一個crontab文件&#xff0c;這個就是系統任務調度的配置文件。/etc/crontab文件包括下面…

回溯算法通關秘籍:像打怪一樣刷題

&#x1f680; 回溯算法通關秘籍&#xff1a;像打怪一樣刷題&#xff01; 各位同學&#xff0c;今天咱們聊聊 回溯算法&#xff08;Backtracking&#xff09;。它聽起來玄乎&#xff0c;但其實就是 “暴力搜索 剪枝” 的優雅版。 打個比方&#xff1a;回溯就是在迷宮里探險&am…

嵌入式Linux常用命令

&#x1f4df; 核心文件與目錄操作pwd-> 功能: 打印當前工作目錄的絕對路徑。-> 示例: pwd -> 輸出 /home/user/projectls [選項] [目錄]-> 功能: 列出目錄內容。-> 常用選項:-l: 長格式顯示&#xff08;詳細信息&#xff09;-a: 顯示所有文件&#xff08;包括隱…

深入理解 Linux 內核進程管理

在 Linux 系統中&#xff0c;進程是資源分配和調度的基本單位&#xff0c;內核對進程的高效管理直接決定了系統的性能與穩定性。本文將從進程描述符的結構入手&#xff0c;逐步剖析進程的創建、線程實現與進程終結的完整生命周期&#xff0c;帶您深入理解 Linux 內核的進程管理…

ACP(三):讓大模型能夠回答私域知識問題

讓大模型能夠回答私域知識問題 未經過特定訓練答疑機器人&#xff0c;是無法準確回答“我們公司項目管理用什么工具”這類內部問題。根本原因在于&#xff0c;大模型的知識來源于其訓練數據&#xff0c;這些數據通常是公開的互聯網信息&#xff0c;不包含任何特定公司的內部文檔…

使用Xterminal連接Linux服務器

使用Xterminal連接Linux服務器&#xff08;VMware虛擬機&#xff09;的步驟如下&#xff0c;前提是虛擬機已獲取IP&#xff08;如 192.168.31.105&#xff09;且網絡互通&#xff1a; 一、準備工作&#xff08;服務器端確認&#xff09;確保SSH服務已安裝并啟動 Linux服務器需要…

ChatBot、Copilot、Agent啥區別

以下內容為AI生成ChatBot&#xff08;聊天機器人&#xff09;、Copilot&#xff08;副駕駛&#xff09;和Agent&#xff08;智能體/代理&#xff09;是AI應用中常見的三種形態&#xff0c;它們在人機交互、自動化程度和任務處理能力上有著顯著的區別。特征維度ChatBot (聊天機器…

2025 年大語言模型架構演進:DeepSeek V3、OLMo 2、Gemma 3 與 Mistral 3.1 核心技術剖析

編者按&#xff1a; 在 Transformer 架構誕生八年之際&#xff0c;我們是否真的見證了根本性的突破&#xff0c;還是只是在原有設計上不斷打磨&#xff1f;今天我們為大家帶來的這篇文章&#xff0c;作者的核心觀點是&#xff1a;盡管大語言模型在技術細節上持續優化&#xff0…