【问题标题】:Kubernetes Init Container fail fastKubernetes Init 容器快速失败
【发布时间】:2019-05-19 22:54:49
【问题描述】:

我有一个Init Container,它会检查数据库版本。如果 Init Container 中的数据库版本检查失败,整个 Deployment 应该会立即失败。但是我仍然希望 Pod 中的其他 Container 到 restartPolicy=Always

但是,Init 容器是

根据Pod重试restartPolicy

如果我可以为 Init Container 指定与 Deployment 不同的 restartPolicy,那就太好了,但这是不可能的。 Lifecycle Hooks 也不会真正起作用,因为此用例所需的是 PreStart 钩子。

有没有让 Init Containers 快速失败的好方法?

【问题讨论】:

  • 问题不在于快速失败,而在于它会不断检查并一遍又一遍地失败。这通常是首选,因为它会导致随时间的收敛行为。就像如果 db pod 崩溃并返回,您的 pod 将再次检查并返回。

标签: kubernetes


【解决方案1】:

您想创建一个单独的容器,它将检查数据库版本,如果成功,创建一些工件,例如在主机驱动器上的文件 /tmp/db_version,然后您只需添加 livenessProbe/readinessProbe到您的主部署,它将检查/tmp/db_version 的存在,例如

livenessProbe:
      exec:
        command:
        - ls
        - /tmp/db_version
      initialDelaySeconds: 5
      periodSeconds: 5

因此,您可以将 db_version_check 容器和主容器的 restartPolicy 放在一边。

【讨论】:

    猜你喜欢
    • 2021-02-06
    • 2021-02-26
    • 2021-01-13
    • 1970-01-01
    • 2017-10-21
    • 2015-02-25
    • 1970-01-01
    • 2018-09-09
    • 2012-06-22
    相关资源
    最近更新 更多