简述 K8S 创建一个pod的详细流程,涉及的组件怎么通信的?

Kubernetes(K8s)创建一个Pod的详细流程如下:

  1. 用户通过REST API创建一个Pod。
  2. API Server接收到请求后,将其写入etcd。etcd是Kubernetes的分布式键值存储系统,用于存储所有集群状态的信息。
  3. 调度器检测到未绑定Node的Pod,开始调度并更新Pod的Node绑定。调度器根据一系列复杂的算法来选择合适的节点,如资源可用性、标签匹配、预选和亲和性约束等。
  4. Kubelet通过与Node节点上的container runtime(如Docker或containerd)交互,检测到有新的Pod调度过来,并运行该Pod。Kubelet会根据Pod的配置文件创建容器,并将容器运行在指定的Node节点上。
  5. Kubelet通过container runtime获取Pod的状态,并将其更新到API Server中。API Server将Pod的状态信息存储在etcd中。
  6. 所有组件通过API Server的Watch接口监测资源变化情况,并对资源作相应的操作。例如,Controller Manager通过Watch接口监测资源的状态变化,并根据资源状态的变化执行相应的控制逻辑。Scheduler通过Watch接口监测新创建的Pod,并根据调度算法选择合适的节点进行调度。

总之,Kubernetes通过API Server、etcd、Kubelet、Controller Manager和Scheduler等组件的协同工作,实现了Pod的创建、调度和运行。所有组件通过REST API和Watch接口进行通信,共同维护集群的状态和资源的运行状况。

发表评论

后才能评论