gpt4 book ai didi

kubernetes - Liveness-Probe 通过另一个 pod

转载 作者:行者123 更新时间:2023-12-02 11:32:52 32 4
gpt4 key购买 nike

在我的 Kubernetes 设置中,我有 2 个 pod - A(通过部署)和 B(通过 DS)。
Pod B 以某种方式依赖于 Pod A 的完全启动。我现在想在 Pod B 中设置一个 HTTP Liveness-Probe,如果通过 POD A 的健康检查失败,则重新启动 POD B。如果我将 POD A 服务的外部 IP 放在主机中,则重新启动工作正常。问题在于解析主机中的 DNS 名称。
如果我这样设置它会起作用:

livenessProbe:
httpGet:
host: <POD_A_SERVICE_EXTERNAL_IP_HERE>
path: /health
port: 8000
如果我这样设置它会失败:
livenessProbe:
httpGet:
host: auth
path: /health
port: 8000
失败并显示以下错误消息:
Liveness probe failed: Get http://auth:8000/health: dial tcp: lookup auth on 8.8.8.8:53: no such host

引用: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/
上面页面上的以下行是否也适用于 HTTP 探针?
“您不能在主机参数中使用服务名称,因为 kubelet 无法解析它。”

最佳答案

正确👍,DNS对liveness probes不起作用,kubelet网络空间基本无法解析任何集群内DNS。
您可以考虑将您的两个服务作为 sidecar 放在一个 pod 中。这样,如果一个容器发生故障,它们将共享相同的地址空间,然后整个 pod 将重新启动。
另一种选择是创建一个 operator 🔧 用于您的 pods/应用程序,基本上让它通过集群内 DNS 分别检查两个 pod 的活跃度,并通过 Kubernetes API 重新启动 pod。
您也可以在仅调用 curl 的 pod 中创建自己的脚本。检查 200 OKkubectl如果您有其他事情,请重新启动您的 pod。
请注意,对于上述 2 个选项,您需要确保 Coredns 稳定可靠,否则您的健康检查可能无法使您的服务有潜在的停机时间。
✌️☮️

关于kubernetes - Liveness-Probe 通过另一个 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63082309/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com