Pod的生命周期和重启策略

Pod在整个生命周期过程中被定义为各种状态,熟悉Pod的各种状态有助于理解如何设置Pod的调度策略、重启策略。

Pod的状态

Pod的状态包含以下几种,如图:

状态值 描述
Pending APl Server已经创建该Pod,但Pod 内还有一个或多个容器的镜像没有创建,包括正在下载镜像的过程
Running Pod内所有容器均已创建,且至少有一个容器处于运行状态、正在启动状态或者正在重启状态
Succeeded Pod内所有容器均成功执行后退出,且不会再重启
Failed Pod内所有容器均已退出,但至少有一个容器退出为失败状态
Unknown 由于某种原因无法获取该Pod的状态,可能由于网络通信不畅导致

重启策略

Pod的重启策略(RestartPolicy)应用于Pod内所有的容器,并且仅在Pod所处的Node上由kubelet进行判断和重启操作。当某哥容器异常退出或者健康检查石柏师,kubelet将根据RestartPolicy的设置进行相应的操作
Pod的重启策略包括Always、OnFailure及Nerver,默认值为Always。

  • Always:当容器失效时,由kubelet自动重启该容器。
  • OnFailure:当容器终止运行且退出码不为0时,由kubelet自动重启该容器。
  • Never:不论容器运行状态如何,kubelet都不会重启该容器。

kubelet重启失效容器的时间间隔以sync-frequency乘以2n来计算,例如1、2、4、8倍等,最长延时5分钟,并且成功重启后的10分钟后重置该事件。
Pod的重启策略和控制方式息息相关,当前可用于管理Pod的控制器宝库ReplicationController、Job、DaemonSet及直接通过kubelet管理(静态Pod),每种控制器对Pod的重启策略要求如下:

  • RC和DaemonSet:必须设置为Always,需要保证该容器持续运行
  • Job:OnFailure或Nerver,确保容器执行完成后不再重启
  • kubelet:在Pod失效时重启他,不论RestartPolicy设置什么值,并且也不会对Pod进行健康检查
    image
posted @ 2021-07-29 11:35  随便学学111  阅读(226)  评论(0编辑  收藏  举报