【问题标题】:Kubernetes startup probe skipped after container restart容器重启后跳过 Kubernetes 启动探测
【发布时间】:2022-01-06 06:46:43
【问题描述】:

在 Kubernetes v1.20 上运行

我配置了一个启动探针和一个活跃度探针。在容器第一次启动时,将执行启动探针,直到活性探针接管(如文档所述)。但是,如果 liveness 探测失败并且容器重新启动,则似乎不会再次执行启动探测。这是预期的行为吗?我在任何地方都找不到此文档。

为了重现此问题,我正在运行以下容器定义(仅相关部分):

containers:
      - args:
        - /bin/sh
        - -c
        - touch /tmp/alive; sleep 10000
        image: busybox
        livenessProbe:
          exec:
            command:
            - /bin/sh
            - -c
            - touch /tmp/liveness; test -f /tmp/alive
          failureThreshold: 3
          initialDelaySeconds: 10
          periodSeconds: 2
          successThreshold: 1
          timeoutSeconds: 2
        startupProbe:
          exec:
            command:
            - touch
            - /tmp/startup
          failureThreshold: 3
          periodSeconds: 2
          successThreshold: 1
          timeoutSeconds: 2

因此,如果 liveness 探针运行,它会创建 /tmp/liveness。如果启动探测运行,它会创建 /tmp/startup。您可以通过删除 /tmp/alive 来模拟活性检查失败。

第一次启动时:

$ ls /tmp/
alive     liveness  startup

rm /tmp/alive之后,liveness检查失败,容器重启。然后,在新容器中:

$ ls /tmp/
alive     liveness

看来启动探测不再执行了。

【问题讨论】:

  • 可能想检查您的 K8 版本是否是受此问题影响的版本:github.com/kubernetes/kubernetes/issues/101064github.com/kubernetes/kubernetes/issues/102230
  • @Raymond 是的,我们在 1.20.6。在寻找已知问题时,似乎我的 Google-fu 不够好。更新后将重新测试,但可能就是这样。随时将其发布为答案,以便我可以在应得的地方给予信用。
  • 好的,作为答案发布,以防万一有人遇到同样的事情
  • 我在 v1.19.10 上遇到了同样的问题,我认为这是修补的问题

标签: kubernetes livenessprobe startup-probe


【解决方案1】:

可能需要检查您的 K8 版本是否是受此问题影响的版本:

https://github.com/kubernetes/kubernetes/issues/101064

https://github.com/kubernetes/kubernetes/issues/102230

【讨论】:

    猜你喜欢
    • 2017-11-02
    • 2022-01-12
    • 1970-01-01
    • 2019-11-23
    • 2021-01-13
    • 2018-05-15
    • 2021-06-23
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多