我有两个kubernetes环境。一个是v1.10.4,另一个是v1.13.5。 当我将完全相同的服务yaml文件部署到这两个环境中并使用curl命令检查nodeport时,我无法从1.13.5版本环境获得响应。 服务yaml文件在两个环境下都公开了nodeport:31218
在1.10版本以下,我可以使用curl命令检查服务节点端口并获得响应。
root@k8s-v110:~# curl -XGET localhost:31218/consumers/admin/api_key
{"total":1,"data":[{"created_at":1557977118000,"main_key":true,"enabled":true,"ref_role":1,"id":"6ec7c50e02ce","expired_time":1573529118000,"key":"5c9e9b3c5066","consumer_id":"b9eb389a3c59"}]}
在1.13版本以下,如果我使用localhost进行curl命令,直到按ctrl + c时我都没有得到任何响应
k8s-v113 [~] [root] # curl -XGET localhost:31218/consumers/admin/api_key
k8s-v113 [~] [root] # curl -XGET 10.111.33.10:31218/consumers/admin/api_key
{"total":1,"data":[{"created_at":1557906877000,"main_key":true,"enabled":true,"ref_role":1,"id":"68b629a3faeb","expired_time":1573458877000,"key":"60eee61045bc","consumer_id":"e0f2d6bf66ce"}]}
我只是想知道k8s是否有任何增强。因此,我不能直接使用localhost吗?
答案 0 :(得分:0)
NodePort上没有任何更改。但是,这两个群集的配置可能有所不同,特别是版本1.13的群集,这样kube-proxy
不会绑定到本地主机(127.0.0.1),而只能绑定到特定的网络接口。由于它是负责NodePort
的组件。您可以在kube-proxy上检查--nodeport-addresses
参数以查看其绑定到的ip。如果未指定或0.0.0.0
,它将绑定到所有接口,问题可能出在其他地方。
还要检查localhost
是否通过127.0.0.1
正确地解析为nslookup localhost
,并尝试将curlinging 127.0.0.1代替:
curl -XGET 127.0.0.1:31218/consumers/admin/api_key