【问题标题】:Kubernetes Startup probe when endpoint is not reachable端点不可访问时的 Kubernetes 启动探测
【发布时间】:2020-12-20 20:33:43
【问题描述】:

我有以下部署配置。 test-worker-health 和 health 端点都无法访问,因为应用程序由于错误而失败。启动探针在失败后不断重启容器,因为 restartPolicy: Always。 pod 进入 CrashLoopBackoff 状态。有没有办法让这种启动探测失败?

livenessProbe:
          failureThreshold: 3
          httpGet:
            path: /health
            port: 8080
          periodSeconds: 20
          successThreshold: 1
          timeoutSeconds: 30
startupProbe:
          httpGet:
            path: /test-worker-health
            port: 8080
          failureThreshold: 12
          periodSeconds: 10

【问题讨论】:

    标签: java kubernetes startup-probe


    【解决方案1】:

    启动探针失败后不断重启容器

    startupProbe 不会重新启动您的容器,但 livenessProbe 会。

    Pod 进入 CrashLoopBackoff 状态。有没有办法让这种启动探测失败?

    如果您删除 livenessProbe,您将不会获得此重启行为。您可能想改用 readinessProbe 吗?

    有没有办法让这种启动探测失败?

    什么意思?正如你所说,它已经“失败”了。你想自动回滚?这是由例如提供的。 Canary 部署,但这是一个更高级的主题。

    【讨论】:

    • 感谢乔纳斯!我会试试看。但我有一个疑问。根据kubernetes.io/docs/tasks/configure-pod-container/…,启动探针会禁用活动性和就绪性检查,直到它成功,确保这些探针不会干扰应用程序启动。那么活性探测不是推迟到启动后进行吗?
    • 是的,我想要回滚到以前的部署。如果启动探针没有重新启动容器,它也应该使 pod 失败,并且之前的部署应该可以工作
    • 是的,livenessProbe 推迟到 startupProbe 之后,但是容器之前可能会崩溃。
    • “如果启动探测没有重新启动容器,它也应该使 pod 失败”-“也使 pod 失败”是什么意思,我认为没有这样的事情?要回滚Deployment,您必须为此添加或实现功能 - 它不是开箱即用的。您可以使用 ReadinessProbe 仅在 pod 健康时允许流量 - 但除此之外您需要添加其他内容。
    • 感谢乔纳斯!就像你说的那样,我会伴随着启动探测和准备探测。最近这也被另一个用户记录为一个错误,并被转换为一个新功能 - github.com/kubernetes/kubernetes/pull/92196
    猜你喜欢
    • 2023-01-30
    • 2022-01-06
    • 2022-01-12
    • 1970-01-01
    • 2017-11-02
    • 2021-09-15
    • 2023-03-18
    • 2019-05-02
    • 2021-09-30
    相关资源
    最近更新 更多