Kubernetes中Deployment的Pod处于Completed状态的含义是什么?
Deployment关联Pod出现Completed状态的含义(非Job场景)
Completed状态的核心含义是:Pod内的所有容器都已正常终止(退出码为0),且后续不会再被重启。- 对于Deployment这类原本用来部署长期运行服务的控制器来说,出现这个状态通常是以下情况导致的:
- 容器本身是一次性任务:比如镜像的启动命令是短期执行的脚本/程序,跑完就正常退出,而Deployment的Pod模板里重启策略被设为了
Never或OnFailure(Deployment默认重启策略是Always,如果是默认配置,容器正常退出后kubelet会反复重启,不会停在Completed状态)。 - 配置失误:误把本该用Job部署的一次性任务镜像,放到了Deployment里,再加上重启策略不是默认的
Always,就会出现Pod执行完任务后停在Completed状态。 - 临时操作导致:比如有人手动修改了Pod的重启策略,或者临时用Deployment部署一次性任务做测试,任务完成后Pod就停在了Completed状态。
- 容器本身是一次性任务:比如镜像的启动命令是短期执行的脚本/程序,跑完就正常退出,而Deployment的Pod模板里重启策略被设为了
- 额外说明:Deployment会维持设定的副本数,如果Completed状态的Pod因为重启策略无法自动重启,控制器会自动创建新的Pod来补全副本数,除非你手动调整了副本数或者设置了Pod保留策略。
内容的提问来源于stack exchange,提问作者Naran
相关产品推荐
相关产品推荐

