【问题标题】:When does kubernetes helm trigger a pod recreate?kubernetes helm 何时触发 pod 重新创建?
【发布时间】:2020-10-10 16:53:16
【问题描述】:

helm documentation 建议通过设置变量元数据值来重新创建 pod

例如:

kind: Deployment
spec:
  template:
    metadata:
      annotations:
        checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }}
[...]

但是有一种情况,当一个 pod 没有重新创建时:

  • pod 在状态 CrashLoopBackOff 中是错误的
  • 只有部署元数据发生了变化

我想知道哪些事件会触发 pod 重新创建:

  • 为什么状态为CrashLoopBackOff的pod没有重启?
  • 为什么不考虑重新创建 pod 规范的所有部分?

编辑

CrashLookBackOff 是一个应用程序问题。 但是如果提供了一个新图像(包含错误修复),则应该重新启动 pod 而无需显式杀死它。

是否有不重启 CrashLookBackOff pod 的原因?

【问题讨论】:

    标签: kubernetes kubernetes-helm


    【解决方案1】:

    Deployment 中的模板PodTemplate。每次更改 PodTemplate 都会创建一个新的 ReplicaSet,并根据使用 PodTemplate 的副本数创建新的 Pod。

    kind: Deployment
    spec:
      template:
        # any change here will lead to new Pods
    

    每次从模板创建新 Pod 时,它都会与之前的 Pod 相同。

    CrashLoopBackOff 是 Pod 级别的问题,例如这可能是应用程序的问题。

    但如果提供了新图像(包含错误修复),则应该重新启动 pod,而无需显式杀死它。

    如果提供了新图像,它应该有自己的唯一名称。这意味着无论何时更改图像,都必须更改图像名称。图像名称的更改是 PodTemplate 中的更改,因此它将始终创建新的 Pod - 并删除但不会重用旧的 Pod。

    【讨论】:

    • 感谢您的有用回复,它回答了模板问题!我已经为 CrashLoopBackOff 部分编辑了我的问题。这对我来说仍然不清楚。
    • 我在这方面扩展了我的答案。
    • 你说得对:当我提供带有新版本的图像时,CrashLoopBackOff pod 会重新启动。
    猜你喜欢
    • 2022-07-27
    • 2017-04-02
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 2022-06-16
    • 2020-08-14
    • 2019-11-30
    • 2020-09-13
    相关资源
    最近更新 更多