我在coreos上运行kubernetes单节点。
我创建了一个运行python应用程序并公开http端点的pod。
我创建了一个暴露HTTP端点的kubernetes服务。我已经使用NodePort公开了该服务,并且可以从集群外部成功调用它。
我要尝试的是从docker容器调用HTTP服务。为了测试,我只是使用相同的运行容器并使用curl。
我可以docker exec进入运行服务的docker容器中。“ my-service”的nslookup解析为IP地址。因此,我很高兴DNS服务注册可以正常工作。(我还检查了该服务的ENV变量是否存在-并且确实存在并且与从返回的值相同nslookup)
但是,如果我尝试:
curl http://my-service:9042/status
Run Code Online (Sandbox Code Playgroud)
它只是挂起而没有任何响应。(端口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...
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
小智 3
从评论来看,听起来你已经成功了。
到服务 IP 的流量通过 kube-proxy 转发,可以通过用户空间代理或通过 iptables 规则转发,具体取决于 Kubernetes 发行版本和配置。您可能需要查看与该容器对应的节点的 iptables 规则,看看这是否是问题的根源。
| 归档时间: |
|
| 查看次数: |
2704 次 |
| 最近记录: |