我想如何从节点内部或外部的任何pod调用服务。
我有3个部署和服务节点。我已经有了一个kube-proxy。
我在其他pod上执行bash:
kubectl exec --namespace=develop myotherdpod-78c6bfd876-6zvh2 -i -t -- /bin/bash
在我的另一个pod中,我试图执行curl:
curl -v http://myservice.develop.svc.cluster.local/user
这是我创建的服务:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "myservice",
"namespace": "develop",
"selfLink": "/api/v1/namespaces/develop/services/mydeployment-svc",
"uid": "1b5fb4ae-ecd1-11e7-8599-02cc6a4bf8be",
"resourceVersion": "10660278",
"creationTimestamp": "2017-12-29T19:47:30Z",
"labels": {
"app": "mydeployment-deployment"
}
},
"spec": {
"ports": [
{
"name": "http",
"protocol": "TCP",
"port": 80,
"targetPort": 8080
}
],
"selector": {
"app": "mydeployment-deployment"
},
"clusterIP": "100.99.99.140",
"type": "ClusterIP",
"sessionAffinity": "None"
},
"status": {
"loadBalancer": {}
}
}
答案 0 :(得分:3)
在我看来,部署的网络覆盖可能有些不对劲。首先,我会仔细检查pod是否可以访问kube-dns并获得正确的服务IP。
persistent_menu
如果您能够确认,那么我还会检查kube-proxy等服务是否正常工作。您可以使用
来完成nslookup myservice.develop.svc.cluster.local
nslookup myservice # If they are in the same namespace it should work as well
如果这不起作用,我还会通过执行
来检查Overlay网络中的podsystemctl status kube-proxy
如果一切正常,我会尝试使用其他网络覆盖:https://kubernetes.io/docs/concepts/cluster-administration/networking/
如果这也不起作用,我会检查是否有防火墙规则阻止节点之间的某些通信。