生命周期
代码位置(pkg/apis/core/types.go) Pending 意味着 pod 已经被系统接受,但是容器中一个或者多个还没有启动.这个包括了绑定到节点前的时间以及拉取镜像到主机所花费的时间 Running 意味着 pod 已经绑定到一个几点,而且所有容器已经启动.至少一个容器仍在运行中或者正在重启中 Succeeded 意味着 pod 中所有的容器已经自愿终止,退出码为 0,系统将不会再重启这些容器 Failed 意味着 pod 中所有的容器已经被终止,至少一个容器以失败终止(退出码为非 0 或者被系统停止) Unknown 意味着由于某些原因 pod 的状态无法获取到,典型的是由于和 pod 所在主机通信失败
状态检测
kubelet 通过 对 pod 中的每个容器进行状态检测,称为探针,分一下几种
livenessProbe
用于知道什么时候重启容器
readinessProbe
用于知道什么时候可以接受请求
startupProbe
用于知道什么时候容器启动了,启用他后,在他成功之前其他的探针都被禁用.
探测方式有以下几种:
ExecAction
在容器内执行命令,根据退出码判断是否正常(0 为正常)
TCPSocketAction
对容器 ip 和端口进行 tcp 链接,如果成功,则正常
HTTPGetAction
对容器的 ip 和端口已经路径执行 http get 请求,如果响应码大于等于 200 且小于 400,则正常
重启策略
pod spec 中可设置 restartPolicy,取值范围:
Always(默认)
总是重启
OnFailure
失败则重启
Never
从不重启