1、通过 kubectl 命令向 apiserver 提交, apiserver 将资源保存在 etcd 中;
2、controllermanager 通过控制循环,获取新创建的资源,并创建 pod 信息。这里只创建pod并未调度和创建容器;
3、kube-scheduler 也会循环获取新创建但未调度的pod,并在执行一系列调度算法后,将 pod 绑定到一个 node上,并更新 etcd 中的信息。具体方式是在 pod 的 spec 中加入 nodeName 字段;
4、Kubelet监视所有Pod对象的更改,当发现Pod已绑定到Node,并且绑定的Node本身的Kubelet会接管所有后续任务,包括创建 pod 网络、创建container等;
5、kubelet 会通过 CRI 调用 container runtime(docker) 创建 pod 中的 container
首先,使用kubectl或其他工具,通过定义一个yaml文件或使用命令行参数来创建pod。
然后,k8s会通过调度器将pod部署到节点上,并且会创建一个pod的沙盒,其中包含一个容器。
接下来,k8s会逐步启动pod的容器,并在其中运行指定的应用程序或进程。
在所有容器都成功启动之后,pod会被视为就绪,并且可以被访问和使用。如果pod失败或需要重新启动,k8s会自动销毁并重新创建pod的容器。