文章目錄
- K8s架構
- K8s核心組件
- 控制平面組件(部署在 Master 節點)
- 1. 查看組件運行情況
- 2. 查看組件 help 命令
- Node端組件(部署在每個工作節點)
- K8s內部工作原理
Kubernetes(也稱為 K8s)是一個開源的容器編排和管理系統,用于自動部署、擴展和管理容器化應用程序。
K8s架構
Kubernetes 采用主從架構(Master-Worker),主要分為兩大部分:
1. 控制平面(Control Plane)—— 管理集群用于全局決策(比如調度)、集群狀態管理等。
2. 工作節點(Worker Node)—— 執行容器化應用
運行實際的容器應用,并向控制平面匯報狀態。
3. 分布式特性
- 無中心節點(Master 節點可多副本 HA)
- 所有組件通過 API Server 交互
- 狀態存儲在 etcd 中(強一致性)
K8s核心組件
控制平面組件(部署在 Master 節點)
組件 | 作用 |
---|---|
kube-apiserver | 所有組件交互的入口,提供 REST API 接口,是集群的“中樞神經” |
etcd | 分布式鍵值存儲,保存整個集群的狀態數據(如 Pod 信息、配置等) |
kube-scheduler | 負責為新創建的 Pod 分配合適的 Node 節點 |
kube-controller-manager | 管理控制器(副本控制器、節點控制器等),維持系統期望狀態 |
cloud-controller-manager | 用于和云廠商平臺(如 AWS、GCP)集成,管理負載均衡、存儲等資源 |
1. 查看組件運行情況
在 Kubernetes 中,控制平面組件本身并不是通過 kubectl 的 help 命令直接查看的對象,因為它們不是 API 對象,而是后臺運行的服務程序。但你可以間接地通過以下方式獲取它們的信息或確認它們是否在運行。
kubectl get pods -n kube-system
2. 查看組件 help 命令
Node端組件(部署在每個工作節點)
組件 | 作用 |
---|---|
kubelet | 負責與 API Server 通信,管理容器生命周期,監控容器運行狀態 |
kube-proxy | 實現服務的負載均衡和網絡代理,實現 Kubernetes 的 Service 網絡 |
容器運行時(如 containerd、CRI-O、Docker) | 運行容器的底層工具,遵循 Kubernetes 的 CRI 接口 |
K8s內部工作原理
下面用一個創建 Pod 的過程來理解內部工作流程:
創建一個 Pod 的流程:
1. 用戶操作:用戶通過 kubectl 或其他方式向 kube-apiserver 提交創建 Pod 的請求。
2. API Server 接收請求:
驗證并將 Pod 對象寫入到 etcd 中(持久存儲)。
3. 調度器(kube-scheduler):
- 監聽未調度的 Pod;
- 根據策略(資源使用率、親和性等)選擇合適的 Node;
- 將調度結果寫入 etcd。
4. 控制器通知 Node:
kubelet 監聽到自己的 Node 上有新 Pod 需要創建,拉取鏡像并創建容器。
5. 容器運行:
使用容器運行時(如 containerd)啟動容器。
6. kubelet 上報狀態:
周期性向 API Server 匯報 Pod 運行狀態。
7. Service 和 kube-proxy:
若 Pod 關聯了 Service,kube-proxy 會更新 iptables 或 IPVS 規則,進行負載均衡。