创建一个controller时k8s各组件间如何协作?

kubectl run httpd-app --image=httpd --replicas=2
Kubernetes 部署了 deployment httpd-app,有两个副本 Pod,分别运行在 k8s-node1 和 k8s-node2。

详细讨论整个部署过程。

  1. kubectl 发送部署请求到 API Server。
  2. API Server 通知 Controller Manager 创建一个 deployment 资源。
  3. Scheduler 执行调度任务,将两个副本 Pod 分发到 k8s-node1 和 k8s-node2。
  4. k8s-node1 和 k8s-node2 上的 kubectl 在各自的节点上创建并运行 Pod。

补充两点:

  1. 应用的配置和当前状态信息保存在 etcd 中,执行 kubectl get pod 时 API Server 会从 etcd 中读取这些数据。

  2. flannel 会为每个 Pod 都分配 IP。因为没有创建 service,目前 kube-proxy 还没参与进来。

posted @ 2022-03-03 17:04  Richardo-M-Lu  阅读(53)  评论(0编辑  收藏  举报