gpt4 book ai didi

kubernetes - 无法从 kubernetes pod 内部使用 curl 和服务名称

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

我在运行 coreos 上的 kubernetes 单节点 .

我创建了一个运行 python 应用程序并公开一个 http 端点的 pod。

我创建了一个公开 HTTP 端点的 kubernetes 服务。我已经使用 NodePort 公开了这个服务,并且可以从集群外部成功调用它。

然后我尝试从 docker 容器调用 HTTP 服务。为了测试,我只是使用相同的运行容器并使用 curl。

我可以 docker exec进入运行我的服务的 docker 容器。
nslookup for 'my-service' 解析为 IP 地址。所以我很高兴 DNS 服务注册工作正常 . (我还检查了服务的 ENV 变量是否存在 - 它们确实存在并且与从 nslookup 返回的值相同)

但是,如果我再尝试:

curl http://my-service:9042/status

它只是挂起而没有任何 react 。 (端口 9042 是正确的端口,状态是有效资源)

我假设我错过了一些非常明显的东西。任何建议都受到热烈欢迎。

更新:

curl -v 的响应是:
root@lake-cluster-manager:/# curl -v http://lake-service:9042/status
* Hostname was NOT found in DNS cache
* Trying 10.3.0.128...

nslookup 的输出是:
root@lake-cluster-manager:/# nslookup lake-service   
Server: 10.3.0.10
Address: 10.3.0.10#53

Name: lake-service.default.svc.cluster.local
Address: 10.3.0.128

最佳答案

从评论来看,听起来你已经开始工作了。

服务 IP 的流量通过 kube-proxy 转发,通过用户空间代理或通过 iptables 规则,具体取决于 Kubernetes 发布版本和配置。您可能需要查看与该容器对应的节点的 iptables 规则,看看这是否可能是问题的根源。

关于kubernetes - 无法从 kubernetes pod 内部使用 curl 和服务名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34557758/

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