Pod的创建流程
执行流程
-
执行命令连接API Server:
- 用户执行命令(例如创建RC资源),系统会加载位于
$HOME/.kube/config的证书文件来验证与API Server的连接。 - 假设用户正在创建一个副本数量为5的
ReplicationController(RC)。此时,Pod 状态为Pending,说明 Pod 尚未调度到集群中的节点。
- 用户执行命令(例如创建RC资源),系统会加载位于
-
API Server 请求处理:
- 当请求到达
API Server时,首先进行身份验证和权限校验,确保用户具备相关资源的操作权限。 - 接着,
API Server会解析用户提供的资源配置文件(如RC配置文件),检查配置的有效性。
- 当请求到达
-
记录请求到 etcd:
- 如果权限校验通过,
API Server会将请求记录下来,并将相关资源状态(例如副本数量、Pod 配置等)写入到etcd数据库,以便持久化存储。
- 如果权限校验通过,
-
Control Manager 任务监控:
Control Manager组件会查询API Server,查看是否有任务需要进行状态更新或修复。- 发现有一个
ReplicationController资源需要创建5个副本,但当前副本数为0时,Control Manager会开始监听 (watch) 事件,确保副本数量增加到5个。
-
调度过程:
Scheduler会定期查询API Server,检查是否有需要调度的 Pod。API Server返回需要调度的 Pod 列表,以及集群中节点的资源状态(例如 CPU、内存等)。
-
调度结果存储:
- 一旦
Scheduler确定了 Pod 的调度位置,它会将调度结果返回给API Server。 API Server将调度结果(例如将 Pod 分配到某个节点上)存储在etcd中,作为集群状态的一部分。
- 一旦
-
Kubelet 上报节点与 Pod 状态:
Kubelet作为每个节点上的组件,会定期向API Server上报节点的资源状态(如 CPU、内存使用情况)以及其管理的 Pod 状态。
-
API Server 验证与任务下发:
API Server会验证Kubelet上报的证书文件,确保其身份合法。如果验证通过,API Server会将相关的 Pod 任务信息(例如 Pod 的具体配置与调度任务)下发给对应的Kubelet。
-
Pod 创建与状态上报:
Kubelet开始在本节点上创建 Pod,并不断向API Server上报 Pod 的状态(如容器的启动、运行状态等)以及节点的健康状况。API Server会将 Pod 的最新状态记录在etcd中。
浙公网安备 33010602011771号