gpt4 book ai didi

service - 准备就绪-在Pod启动时探测另一项服务

转载 作者:行者123 更新时间:2023-12-02 12:03:51 27 4
gpt4 key购买 nike

在我的Kubernetes设置上,我有2个服务-A和B.
服务B取决于完全启动服务A。
我现在想在服务B的Pod中设置一个TCP就绪探针,以便他们测试服务A的Pod是否已完全运行。

Service B中部署的ReadinessProbe部分如下所示:

readinessProbe:
tcpSocket:
host: serviceA.mynamespace.svc.cluster.local
port: 1101 # same port of Service A Readiness Check

我可以应用这些更改,但是“准备情况调查”失败了:
Readiness probe failed: dial tcp: lookup serviceB.mynamespace.svc.cluster.local: no such host

我在其他地方使用了相同的主机名(例如,我将其作为ENV传递给了容器),它可以正常工作并得到解析。

是否有人想让其他服务做好准备或在服务之间进行某种其他类型的依赖关系检查?
谢谢 :)

最佳答案

由于就绪和 Activity probeskubelet节点代理完全管理,并且kubelet从特定的Node配置继承DNS发现服务,因此您无法解析K8的内部名称服务器DNS记录:

For a probe, the kubelet makes the probe connection at the node, not in the pod, which means that you can not use a service name in the host parameter since the kubelet is unable to resolve it.



您可以考虑当源 Pod A 通过传播 hostNetwork: true参数消耗节点IP地址时的场景,因此 kubelet可以从 Pod B 内部到达并成功进行“就绪”探测,如官方k8s documentation中所述:
tcpSocket:
host: Node Hostname or IP address where Pod A residing
port: 1101

但是,我发现了Stack thread,在这里您可以获得更有效的解决方案,如何通过 Init Containers达到相同的结果。

关于service - 准备就绪-在Pod启动时探测另一项服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56986794/

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