# pod 创建过程中的状态变化详解
1.Pending:
# 在 Pod 被创建后,它首先进入 Pending 状态。这个状态意味着 Pod 已被 Kubernetes 系统接受。
# 但是还有一些准备工作未完成。这可能涉及如下几个方面:
# 1.Pod 配置的数据卷(Volumes)尚未准备就绪。
# 2.没有符合 Pod 资源请求的节点(Node)。
# 3.Pod 依赖的服务尚未就绪(如通过 Init Containers)。
2.ContainerCreating:
# Pod 已经被调度到一个节点上,容器镜像正在被拉取,并且容器正在被创建。
# 这是 Pod 状态从 Pending 过渡到 Running 之前的一个暂态。
3.Init:N/M:
#如果 Pod 配置了 Init Containers(初始化容器),容器需要在应用容器启动之前按顺序成功运行。
# 在这个阶段中,N 表示当前正在运行或已完成的初始化容器的数量,M 表示初始化容器的总数。
4.Running:
# 一旦 Pod 上的所有容器都已创建并至少有一个容器正在运行,Pod 就会进入 Running 状态。
# 在 Running 状态下,Pod 将继续进行健康检查和存活检查(Liveness and Readiness Probes),以确保服务正常运行。
5.Succeeded/Failed:
# 如果 Pod 是短暂的(例如 Job 或 CronJob),那么当所有容器成功退出时,Pod 的状态会变为 Succeeded。
# 如果有容器非正常退出(例如退出状态非零),Pod 的状态会变为 Failed。
6.CrashLoopBackOff:
#这不是 Pod 的官方状态,但是它常常出现在 Pod 描述中。
# 这意味着 Pod 中至少有一个容器尝试启动,但是失败了(往往是因为应用程序错误)。
# Kubernetes 会尝试重启容器,但在连续失败后,它会等待越来越长的时间,
# 这个等待时间增加的状态就是 CrashLoopBackOff。
7.Unknown:
# 如果因为某些原因,节点的状态未知,那么节点上的 Pod 也会被标记为 Unknown 状态。
# 这可能是由于节点与 Kubernetes 主节点通信失败导致的。
8.Terminating
# 如果Pod正在被删除,但某些原因导致它没有立即停止,它可能会一直处于Terminating状态。
# 这可能是因为Pod需要完成清理任务,或者因为存在终止Pod的钩子(hooks)正在执行。
9.Completed
# 如果Pod是运行一次性任务的,例如批处理作业或Jobs,当任务完成后,Pod中的所有容器会正常退出(退出代码为零),
# 而Pod状态会变为Completed。这不是错误状态,但意味着Pod不会再持久化运行。
10.Failed
# 如果Pod中的容器因为某些原因异常终止(退出代码非零),Pod状态会变为Failed。
# 这可能是由于应用程序错误、配置问题或系统资源不足导致的。
11.Evicted
#当节点上的资源(如内存或磁盘空间)枯竭时,Kubernetes可能会逐出某些Pod,以释放资源给其他Pod。
# 被逐出的Pod状态会显示为Evicted。