k8s之pod的创建过程

pod的创建过程

  • 用户通过kubectl或其他api客户端提交需要创建的pod信息给apiServer
  • apiServer开始生成pod对象的信息,并将信息存入etcd,然后返回确认信息至客户端
  • apiServer开始反映etcd中的pod对象的变化,其它组件使用watch机制来跟踪检查apiServer上的变动
  • scheduler发现有新的pod对象要创建,开始为Pod分配主机并将结果信息更新至apiServer
  • node节点上的kubelet发现有pod调度过来,尝试调用docker启动容器,并将结果回送至apiServer
  • apiServer将接收到的pod状态信息存入etcd中

pod的终止过程

  • 用户向apiServer发送删除pod对象的命令
  • apiServcer中的pod对象信息会随着时间的推移而更新,在宽限期内(默认30s),pod被视为dead
  • 将pod标记为terminating状态
  • kubelet在监控到pod对象转为terminating状态的同时启动pod关闭过程
  • 端点控制器监控到pod对象的关闭行为时将其从所有匹配到此端点的service资源的端点列表中移除
  • 如果当前pod对象定义了preStop钩子处理器,则在其标记为terminating后即会以同步的方式启动执行
  • pod对象中的容器进程收到停止信号
  • 宽限期结束后,若pod中还存在仍在运行的进程,那么pod对象会收到立即终止的信号
  • kubelet请求apiServer将此pod资源的宽限期设置为0从而完成删除操作,此时pod对于用户已不可见
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Kubernetes 中的 Pod 是最小的可部署单元,它由一个或多个容器组成。下面是 Kubernetes Pod创建过程: 1. **创建 Pod 定义文件**:使用 YAML 或 JSON 格式创建一个 Pod 定义文件,其中包含了 Pod 的规格、容器镜像、端口映射等配置信息。 2. **提交 Pod 定义文件**:使用 `kubectl apply -f <pod-definition-file>` 命令提交 Pod 定义文件给 Kubernetes 集群。这会将 Pod 定义文件传递给 Kubernetes 控制平面。 3. **kube-apiserver 处理请求**:kube-apiserver 是 Kubernetes API 的主要入口,它接收到提交的 Pod 定义文件,并进行处理。它验证并将 Pod 的描述存储到 etcd 中,这是 Kubernetes 集群的分布式键值存储。 4. **kube-scheduler 分配节点**:kube-scheduler 是 Kubernetes 的调度器组件,它根据调度算法选择一个合适的节点来运行 Pod。调度决策通常基于节点的资源可用性、Pod 的资源需求、亲和性和反亲和性等因素。 5. **kubelet 创建容器**:kubelet 是在每个节点上运行的代理程序,它负责管理容器的生命周期。一旦 kubelet 接收到分配给该节点的 Pod,它会与容器运行时(如 Docker)交互来创建和管理容器实例。 6. **容器状态报告**:kubelet 定期向 kube-apiserver 报告容器的状态。这包括容器的运行状态、健康状况和事件等信息。 7. **控制器监控和调节**:kube-controller-manager 中的控制器会监控 Pod 的状态,并根据需要进行调节。例如,如果 Pod 失败或被删除,控制器将负责重新创建或部署 Pod,以确保应用程序的高可用性。 以上是 Pod 的一般创建过程。整个过程中,Kubernetes 的各个组件协同工作,确保 Pod 能够在适当的节点上正确运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值