Kubernetes部署的Docker容器状态总是exited


如题,总是出现这样的问题,导致replicationController始终一直在创建pod,建立容器。不知道Kubernetes启动容器的方式是什么呢?
已邀请:

hessen - Docker 爱好者

赞同来自: styshoo


具体的启动步骤可以参考这篇文章。这个里面介绍的 syncPod函数应该是做这个工作的。首先确保特殊net容器已经启动, 若没有启动则先杀死pod里所有容器, 再重新启动net容器。根据pod配置文件准备需要挂载的volume, 供后文启动容器时使用。之后再对每个pod里的容器计算一个expectedHash值,使用的方法是adler32/hash pkg里的函数。再查询Docker后台相同名字的容器的hash。 若hash不同,则杀掉原来的容器并杀掉所关联的net容器。若hash相同则不操作。查验容器的restartPolicy,如果容器挂了不指定重启策略,则什么都不做,这适用于不运行Daemon进程的容器。
调用Docker client下载容器镜像。

至于Docker容器exited,这个得看具体情况啊,可能跟容器镜像本身有关,启动容器之后没有一个一直在运行的进程,看你容器运行的是什么服务了?

杨章显 - 思科系统运维工程师

赞同来自:


可以提供下你的k8s版本信息以及apiserver, controller-manager及kubelet的配置信息,单从你的信息无法做出详细判断了。

wangzi19870227 - sina攻城狮,docker爱好者

赞同来自:


容器镜像本身问题比较大:
1)可能是container本身启动就没成功。这种情况下,通过docker ps | grep ${CONTAINER_ID}看到的container的status应该是非0,执行docker logs ${CONTAINER_ID}可以看到具体错误信息;
2)可能是container里根进程跑完退出了。这种情况下,通过docker ps | grep ${CONTAINER_ID}看到的container的status应该是非0。

要回复问题请先登录注册