Kubernetes的Pod 生命周期和重启策略

目录

    • Pod 的生命周期
    • Pod重启策略

Pod 的生命周期

Pod 在其生命周期中只会被调度一次。 一旦 Pod 被调度(分派)到某个节点,Pod 会一直在该节点运行,直到 Pod 停止或者被终止。

Pod 会被创建、赋予一个唯一的 ID, 并被调度到节点,并在终止(根据重启策略)或删除之前一直运行在该节点。

如果一个节点死掉了,调度到该节点的 Pod 也会在给定超时期限结束后删除。

Pod的生命周期可以分为以下几个阶段:

  1. Pending(等待中):Pod已经被创建,但还没有被调度到具体的节点上运行。此阶段包括等待 Pod 被调度的时间和通过网络下载镜像的时间。

  2. Running(运行中):Pod已经被调度到节点上,Pod 中所有的容器都已被创建,至少有一个容器在运行。此时,Pod的状态为Running,在这个阶段,容器会一直运行,直到被终止或者删除。

  3. Succeeded(成功):Pod中的所有容器已经成功地完成了它们的任务,并且退出了。此时,Pod的状态为Succeeded。

  4. Failed(失败):Pod中的一个或多个容器已经失败或退出,也就是说,容器以非 0 状态退出或者被系统终止,此时,Pod的状态为Failed。

  5. Unknown(未知):无法获取Pod的状态,通常是因为与 Pod 所在主机通信失败导致的。

如果某节点挂掉或者与集群中其他节点失联,Kubernetes 会将失联节点上运行的所有 Pod 的 状态设置为 Failed。

Pod重启策略

Pod 的 spec 中包含一个 restartPolicy 字段,这个字段就是Pod的重启策略,取值包括 Always、OnFailure 和 Never。默认值是 Always

  1. Always(总是重启):当容器意外终止时,Kubernetes 会自动重启该容器,无论终止的原因是什么。

  2. OnFailure(仅在失败时重启):只有当容器以非零状态码退出时(即失败时),Kubernetes 才会自动重启该容器。

  3. Never(永不重启):当容器终止时,Kubernetes 不会自动重启该容器。

kubelet重启失效容器的时间间隔以sync-frequency乘以2n来计算,例如1、2、4、8倍等,最长延时5min,并且在成功重启后的10min后重置该时间。

Pod的重启策略(RestartPolicy)应用于Pod内的所有容器,并且仅在Pod所处的Node上由kubelet进行判断和重启操作。当某个容器异常退出或者健康检查失败时,kubelet将根据RestartPolicy的设置来进行相应的操作。

你可能感兴趣的:(k8s,kubernetes,容器,云原生,docker,运维)