Pod的创建流程

执行流程

  1. 执行命令连接API Server:

    • 用户执行命令(例如创建RC资源),系统会加载位于 $HOME/.kube/config 的证书文件来验证与 API Server 的连接。
    • 假设用户正在创建一个副本数量为5的 ReplicationController(RC)。此时,Pod 状态为 Pending,说明 Pod 尚未调度到集群中的节点。
  2. API Server 请求处理:

    • 当请求到达 API Server 时,首先进行身份验证和权限校验,确保用户具备相关资源的操作权限。
    • 接着,API Server 会解析用户提供的资源配置文件(如 RC 配置文件),检查配置的有效性。
  3. 记录请求到 etcd:

    • 如果权限校验通过,API Server 会将请求记录下来,并将相关资源状态(例如副本数量、Pod 配置等)写入到 etcd 数据库,以便持久化存储。
  4. Control Manager 任务监控:

    • Control Manager 组件会查询 API Server,查看是否有任务需要进行状态更新或修复。
    • 发现有一个 ReplicationController 资源需要创建5个副本,但当前副本数为0时,Control Manager 会开始监听 (watch) 事件,确保副本数量增加到5个。
  5. 调度过程:

    • Scheduler 会定期查询 API Server,检查是否有需要调度的 Pod。
    • API Server 返回需要调度的 Pod 列表,以及集群中节点的资源状态(例如 CPU、内存等)。
  6. 调度结果存储:

    • 一旦 Scheduler 确定了 Pod 的调度位置,它会将调度结果返回给 API Server
    • API Server 将调度结果(例如将 Pod 分配到某个节点上)存储在 etcd 中,作为集群状态的一部分。
  7. Kubelet 上报节点与 Pod 状态:

    • Kubelet 作为每个节点上的组件,会定期向 API Server 上报节点的资源状态(如 CPU、内存使用情况)以及其管理的 Pod 状态。
  8. API Server 验证与任务下发:

    • API Server 会验证 Kubelet 上报的证书文件,确保其身份合法。如果验证通过,API Server 会将相关的 Pod 任务信息(例如 Pod 的具体配置与调度任务)下发给对应的 Kubelet
  9. Pod 创建与状态上报:

    • Kubelet 开始在本节点上创建 Pod,并不断向 API Server 上报 Pod 的状态(如容器的启动、运行状态等)以及节点的健康状况。
    • API Server 会将 Pod 的最新状态记录在 etcd 中。
posted on 2025-01-21 11:48  Leo-Yide  阅读(82)  评论(0)    收藏  举报