k8s 之 pod 生命周期

226 阅读1分钟

生命周期

代码位置(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

从不重启