一、 K8S組件
1.1 控制平面組件
kube-apiserver:公開 Kubernetes HTTP API 的核心組件服務器。
etcd:具備一致性和高可用性的鍵值存儲,用于所有 API 服務器的數據存儲。
kube-scheduler:查找尚未綁定到節點的 Pod,并將每個 Pod 分配給合適的節點。
kube-controller-manager:運行控制器來實現 Kubernetes API 行為。
1.2 Node組件
kubelet:確保 Pod 及其容器正常運行。
kube-proxy:維護節點上的網絡規則以實現 Service 的功能。
二、Pod
Pod 是 k8s 中集群部署應用和服務的最小單元,一個 pod 中可以部署多個容器。這些容器共享網絡地址與文件系統,可以理解為共享上下文。
1.1 Pod工作負載實現
工作負載資源的控制器通常使用 Pod 模板(Pod Template) 來替你創建 Pod 并管理它們。
1.1.1 Job工作負載
Job 表示一次性任務,運行完成后就會停止。Job 會創建一個或者多個 Pod,并將繼續重試 Pod 的執行,直到指定數量的 Pod 成功終止。 隨著 Pod 成功結束,Job 跟蹤記錄成功完成的 Pod 個數。 當數量達到指定的成功個數閾值時,任務(即 Job)結束。 刪除 Job 的操作會清除所創建的全部 Pod。 掛起 Job 的操作會刪除 Job 的所有活躍 Pod,直到 Job 被再次恢復執行。
1.1.2 StatefulSet工作負載
StatefulSet 運行一組 Pod,并為每個 Pod 保留一個穩定的標識。 這可用于管理需要持久化存儲或穩定、唯一網絡標識的應用。
1.2 Pod的卷
Pod內部有一個Pause容器,代表一個Pod的狀態,Pod的多個容器可以共享Pod中Pause容器的IP還有Pause容器掛載的 Volume。
1.2.1 configMap
configMap以readOnly的模式掛載。
1.2.2 downwardAPI
數據以純文本格式的只讀文件形式存在
1.2.3 emptyDir
在Pod被指派到某節點時此卷會被創建。容器崩潰并不會導致Pod被移除,因此容器崩潰期間emptyDir卷中的數據是安全的。
1.2.4 fc光纖通道
fc卷允許將現有的光纖通道塊存儲卷掛載到Pod中。
1.3 Pod生命周期
Pod的容器狀態:Waiting(等待)、Running(運行中)、Terminated(終止)。
Pod調度就緒態: Pod一旦創建就被認為準備好進行調度。實際情況中,某些Pod可能會長時間處于缺少必要資源的狀態,這些Pod實際以一種不必要的方式擾亂調度器,指定schedulingGates控制Pod何時準備好被納入考量進行調度。
參考:1.Kubernetes(K8S)架構1(Master,Node和Pod)