創(chuàng)建一個(gè) Kubernetes Pod 的過(guò)程如下:
- 用戶(hù)通過(guò) Kubernetes API 或命令行工具(如kubectl)發(fā)送創(chuàng)建 Pod 的請(qǐng)求。
- API Server 接收到請(qǐng)求后,驗(yàn)證用戶(hù)身份和權(quán)限,并將請(qǐng)求轉(zhuǎn)發(fā)給 Kubernetes 控制器。
- 控制器管理器中的 ReplicaSet 控制器或 Deployment 控制器接收到請(qǐng)求后,根據(jù) Pod 的定義和規(guī)則生成一個(gè)或多個(gè) Pod 的配置。
- 控制器將生成的 Pod 配置發(fā)送給調(diào)度器(Scheduler)。
- 調(diào)度器根據(jù)集群中的資源使用情況和調(diào)度策略,選擇一個(gè)適合的節(jié)點(diǎn)來(lái)運(yùn)行該 Pod。
- 調(diào)度器將選定的節(jié)點(diǎn)信息寫(xiě)入 Pod 配置,并將配置返回給控制器。
- 控制器將更新后的 Pod 配置發(fā)送給 API Server。
- API Server 將更新的 Pod 配置存儲(chǔ)在 etcd 中,作為整個(gè)集群的存儲(chǔ)引擎。
- 節(jié)點(diǎn)上的 kubelet 進(jìn)程定期從 API Server 中獲取 Pod 配置。
- kubelet 根據(jù) Pod 的配置信息,在節(jié)點(diǎn)上創(chuàng)建并運(yùn)行一個(gè)或多個(gè)容器,構(gòu)成一個(gè) Pod。
- kubelet 將 Pod 的狀態(tài)更新發(fā)送給 API Server,以便用戶(hù)可以查看 Pod 的運(yùn)行狀態(tài)。
這個(gè)過(guò)程中,控制器負(fù)責(zé)生成和管理 Pod 的配置,調(diào)度器負(fù)責(zé)將 Pod 分配到合適的節(jié)點(diǎn)上,kubelet 負(fù)責(zé)在節(jié)點(diǎn)上創(chuàng)建容器并監(jiān)控其運(yùn)行狀態(tài)。