基本概念
Kubernetes 中的絕大部分概念都抽象成 Kubernetes 管理的一種資源物件:
Master:Master 節點是 Kubernetes 集群的控制節點,負責整個集群的管理和控制,Master 節點上包含以下組件:
- kube-apiserver:集群控制的入口,提供 HTTP REST 服務
- kube-controller-manager:Kubernetes 集群中所有 資源物件的自動化控制中心
- kube-scheduler:負責 Pod 的調度
Node:Node 節點是 Kubernetes 集群中的作業節點,Node 上的作業負載由 Master 節點分配,作業負載主要是運行容器應用,Node 節點上包含以下組件:
- kubelet:負責 Pod 的創建、啟動、監控、重啟、銷毀 等作業,同時與 Master 節點協作,實作集群管理的基 本功能,
- kube-proxy:實作 Kubernetes Service 的通信和負載 均衡
- 運行容器化(Pod)應用
Pod: Pod 是 Kubernetes 最基本的部署調度單元,每個Pod 可以由一個或多個業務容器和一個根容器(Pause 容器)組成,一個 Pod 表示某個應用的一個實體
ReplicaSet:是 Pod 副本的抽象,用于解決 Pod 的擴容和伸縮
Deployment:Deployment 表示部署,在內部使用ReplicaSet 來實作,可以通過 Deployment 來生成相應的ReplicaSet 完成 Pod 副本的創建
Service:Service 是 Kubernetes 最重要的資源物件,Kubernetes 中的 Service 物件可以對應微服務架構中的微服務,Service 定義了服務的訪問入口,服務的呼叫者通過這個地址訪問 Service 后端Pod副本實體,Service 通過 Label Selector 同后端的 Pod 副本建立系,Deployment 保證后端Pod 副本數量,也就是保證服務的伸縮性,

Kubernetes 主要由以下幾個核心組件組成:
- etcd 保存了整個集群的狀態,就是一個資料庫;
- apiserver提供了資源操作的唯一入口,并提供認證、授 權、訪問控制、API 注冊和發現等機制;
- controller manager負責維護集群的狀態,比如故障檢 測、自動擴展、滾動更新等;
- scheduler 負責資源的調度,按照預定的調度策略將 Pod調度到相應的機器上;
- kubelet 負責維護容器的生命周期,同時也負責 Volume(CSI)和網路(CNI)的管理;
- Container runtime 負責鏡像管理以及 Pod 和容器的真正 運行(CRI);
- kube-proxy 負責為Service 提供 cluster 內部的服務發現 和負載均衡;
當然了除了上面的這些核心組件,還有一些推薦的插件:
- kube-dns 負責為整個集群提供 DNS 服務
- Ingress Controller 為服務提供外網入口
- Heapster提供資源監控(已停止維護,取而代之的是 Prometheus)
- Dashboard 提供 GUI
組件通信
Kubernetes 多組件之間的通信原理:
- apiserver 負責 etcd 存盤的所有操作,且只有 apiserver才直接操作 etcd 集群
- apiserver 對內(集群中的其他組件)和對外(用戶)提供統一的 REST API,其他組件均通過apiserver 進行通信
- controller manager、scheduler、kube-proxy 和kubelet 等均通過 apiserver watch API 監測資源變化情況,并對資源作相應的操作
- 所有需要更新資源狀態的操作均通過 apiserver 的REST API 進行
- apiserver 也會直接呼叫 kubelet API(如 logs, exec,attach 等),默認不校驗 kubelet 證書,但可以通過 --kubelet-certificate-authority 開啟(而 GKE 通過SSH 隧道保護它們之間的通信)
比如最典型的創建 Pod 的流程:

- 用戶通過 REST API 創建一個 Pod
- apiserver 將其寫入 etcd
- scheduluer 檢測到未系結 Node 的 Pod,開始調度并更新 Pod 的 Node 系結
- kubelet 檢測到有新的 Pod 調度過來,通過 containerruntime 運行該 Pod
- kubelet 通過 container runtime 取到 Pod 狀態,并更新 到apiserver 中
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/267064.html
標籤:其他
下一篇:鴻蒙內核原始碼分析(例外接管篇) | 社會很單純 , 復雜的是人 | 中文注解HarmonyOS原始碼 | v39.02
