作者信息:https://home.cnblogs.com/u/huangjiabobk

在k8S中,Pod生命周期是什么?

在Kubernetes (k8s) 中,Pod是应用的最小可部署单元,它包含了至少一个容器以及存储资源和网络标识符。Pod的生命周期从创建开始,经历一系列阶段直至最终终止或被删除。以下是Pod生命周期的主要阶段:

  1. 创建(Creation)

    • 用户通过创建一个新的Pod对象来请求Kubernetes调度器为Pod分配资源。
    • Kubernetes系统会赋予Pod一个唯一的ID(UID)。
  2. 调度(Scheduling)

    • Pod被提交到集群后,调度器根据节点资源可用性和Pod的资源需求、亲和性/反亲和性规则等选择合适的节点,并将Pod绑定到该节点上。
  3. 初始化容器启动(Init Containers Execution)

    • 若Pod定义中包含初始化容器(init containers),这些容器会在主容器启动前按顺序执行,用于设置运行主容器所需的条件或环境。
  4. 镜像拉取(Image Pulling)

    • 主容器对应的镜像如果没有在节点上,则kubelet负责从注册表中拉取镜像。
  5. 容器创建与运行(Container Creation and Running)

    • kubelet根据Pod Spec创建并启动主容器。
    • 容器状态会经历从Pending(等待中)到Running(运行中)的变化。
  6. 健康检查与就绪检测(Liveness and Readiness Probes)

    • 在容器运行期间,kubelet可以配置并执行健康检查(liveness probes)和就绪检查(readiness probes)以确保容器正常工作。
    • Liveness Probe用于判断容器是否存活,若失败则可能重启容器。
    • Readiness Probe用于决定容器是否准备好接收流量,只有当容器处于ready状态时,Service才会将其添加到服务端点列表中。
  7. 重启策略(Restart Policy)

    • 根据Pod的重启策略(AlwaysOnFailureNever),kubelet会决定在容器退出时应采取何种行动。
  8. 清理(Termination)

    • 当Pod被删除或者由于某种原因需要终止时,kubelet会按照预定义的优雅关闭策略通知容器停止服务,并等待一段时间让容器完成任何必要的清理操作。
    • 清理完成后,kubelet会真正删除Pod及其相关的容器实例和其他资源。
  9. 终止(Terminated)

    • Pod完全从节点上移除,不再占用任何资源。

综上所述,整个Pod生命周期由Kubernetes系统自动管理,每个阶段都体现了对容器化应用程序生命周期精细控制的能力。

posted @ 2024-02-17 22:29  黄嘉波  阅读(30)  评论(0编辑  收藏  举报
版权声明:原创作品,谢绝转载!否则将追究法律责任。--作者 黄嘉波