本节将以 Deployment 资源的部署为例,简要阐述 Deployment 对象的部署流程。
在实验过程中,可以使用 kubectl get events --watch 查看部署过程中的事件流,从而可以清楚部署的整体流程。
kubectl get events --watch
上图展示了 Deployment 资源的详细部署流程,下面将对其中的几个关键步骤进行解释。
当 API 服务器在其本地生成了一个 Deployment 资源后,所有监听的 Deployment 控制器会收到通知,然后会按照其定义的 ReplicaSet 的定义清单调用 API 服务器接口创建一个新的 ReplicaSet 资源。
当 API 服务器创建完 ReplicaSet 资源后,所有监听的 ReplicaSet 控制器会收到通知,然后检查其定义,主要考虑 replica 数量 (replicaset.spec.replicas) 、Pod 标签选择器 (replicaset.spec.selector),检查其所能匹配到的 Pod 数量,创建或删除 Pod 以使 Pod 的数量与定义中的 replica 数量一致。
replicaset.spec.replicas
replicaset.spec.selector
Scheduler 会监控 pod.spec.nodeName 未定义的 Pod,为它们分配最佳 Node。
pod.spec.nodeName
kubelet 通过监听 Pod 的变更通知,发现有新的 Pod 分配至该 Node 后,会根据 Pod 的定义调用 Docker 创建容器并运行。
Last updated 5 years ago