創建一個 Kubernetes Pod 的過程如下:
- 用戶通過 Kubernetes API 或命令行工具(如kubectl)發送創建 Pod 的請求。
- API Server 接收到請求后,驗證用戶身份和權限,并將請求轉發給 Kubernetes 控制器。
- 控制器管理器中的 ReplicaSet 控制器或 Deployment 控制器接收到請求后,根據 Pod 的定義和規則生成一個或多個 Pod 的配置。
- 控制器將生成的 Pod 配置發送給調度器(Scheduler)。
- 調度器根據集群中的資源使用情況和調度策略,選擇一個適合的節點來運行該 Pod。
- 調度器將選定的節點信息寫入 Pod 配置,并將配置返回給控制器。
- 控制器將更新后的 Pod 配置發送給 API Server。
- API Server 將更新的 Pod 配置存儲在 etcd 中,作為整個集群的存儲引擎。
- 節點上的 kubelet 進程定期從 API Server 中獲取 Pod 配置。
- kubelet 根據 Pod 的配置信息,在節點上創建并運行一個或多個容器,構成一個 Pod。
- kubelet 將 Pod 的狀態更新發送給 API Server,以便用戶可以查看 Pod 的運行狀態。
這個過程中,控制器負責生成和管理 Pod 的配置,調度器負責將 Pod 分配到合適的節點上,kubelet 負責在節點上創建容器并監控其運行狀態。