在k8s中,创建pod时,各个组件是如何工作的?越详细越好

在 Kubernetes 中,创建 Pod 时,涉及多个组件协同工作,以确保 Pod 的创建、调度和运行。这些组件包括 Kubernetes API Server、Scheduler、Controller Manager、etcd、Kubelet、Kube-proxy 以及容器运行时(如 Docker 或 containerd)。以下是详细的工作流程:

1. 用户提交 Pod 定义

  • 用户通过 kubectl 或者其他方式(如 CI/CD 系统)向 Kubernetes API Server 提交 Pod 定义(YAML 或 JSON 格式)。这个定义文件描述了 Pod 的配置,包括容器镜像、资源需求、环境变量、卷挂载等。

2. API Server 接收请求

  • Kubernetes API Server 是 Kubernetes 的控制平面组件,负责接收、验证和处理用户请求。API Server 接收到创建 Pod 的请求后,会先对请求进行验证,包括验证 YAML 文件的语法、字段值是否合法等。

3. 存储到 etcd

  • 验证通过后,API Server 会将 Pod 的定义存储到 etcd 中。etcd 是一个分布式键值存储,用来保存 Kubernetes 集群的所有状态数据。Pod 的状态信息此时被存储为一个“待调度”状态。

4. Controller Manager 监控状态

  • Controller Manager 持续监控 etcd 中的状态信息,并根据期望状态和实际状态的差异来进行相应操作。对于 Pod 创建的请求,ReplicationController、DeploymentController、StatefulSetController 等控制器会检测到新的 Pod 对象,进而执行相应的逻辑。

5. Scheduler 进行调度

  • Kubernetes Scheduler 监控 etcd 中待调度的 Pod。Scheduler 通过综合考虑节点的资源利用情况、Pod 的调度策略(如资源需求、亲和性/反亲和性、污点和容忍度等),为每个待调度的 Pod 选择一个合适的节点。
  • 当 Scheduler 为 Pod 选择好节点后,会将该调度决定更新到 etcd 中。

6. Kubelet 在节点上执行

  • Kubelet 是运行在每个节点上的代理,它负责管理该节点上的 Pod 和容器。Kubelet 通过监听 API Server 或等到 Scheduler 更新的调度信息,从而得知哪些 Pod 被分配到了该节点。
  • 当 Kubelet 在其节点上检测到有新的 Pod 被分配时,它会根据 Pod 定义启动容器。

7. 容器运行时启动容器

  • 容器运行时(Container Runtime) 是实际负责启动和管理容器的组件,例如 Docker、containerd、CRI-O 等。Kubelet 与容器运行时交互,将 Pod 中的每个容器启动起来。
  • 容器运行时会根据 Pod 定义,从镜像仓库拉取镜像(如果本地没有该镜像),然后启动容器。

8. Pod 进入运行状态

  • 当所有容器都成功启动后,Kubelet 会将 Pod 的状态更新为“Running”,并将此状态上报给 API Server,进而更新到 etcd。
  • 同时,Kube-proxy 组件会负责配置集群的网络规则(如 Service 的负载均衡),确保网络流量可以正确路由到 Pod。

9. 监控和管理

  • 运行中的 Pod 通过 Kubelet、监控系统(如 Prometheus)、日志收集系统等工具进行持续监控。Kubelet 定期与 API Server 保持心跳检查,并会自动重启失败的容器以确保 Pod 的健康运行。

总结

通过上述组件的协同工作,Kubernetes 确保了 Pod 的生命周期管理,从创建到调度再到运行,均实现了自动化和高可用。每个组件都扮演着关键角色,共同保证了集群内工作负载的可靠性和可扩展性。

🔥运维干货分享

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

企鹅侠客

您的打赏是我创作旅程中的关键燃

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值