设置externalTrafficPolicy: Local
后,我无法访问以下Kubernetes服务。我直接通过NodePort访问它,但是总是超时。
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "echo",
"namespace": "default",
"selfLink": "/api/v1/namespaces/default/services/echo",
"uid": "c1b66aca-cc53-11e8-9062-d43d7ee2fdff",
"resourceVersion": "5190074",
"creationTimestamp": "2018-10-10T06:14:33Z",
"labels": {
"k8s-app": "echo"
}
},
"spec": {
"ports": [
{
"name": "tcp-8080-8080-74xhz",
"protocol": "TCP",
"port": 8080,
"targetPort": 3333,
"nodePort": 30275
}
],
"selector": {
"k8s-app": "echo"
},
"clusterIP": "10.101.223.0",
"type": "NodePort",
"sessionAffinity": "None",
"externalTrafficPolicy": "Local"
},
"status": {
"loadBalancer": {}
}
}
我知道,为此服务的Pod必须在节点上可用,因为流量不会路由到其他节点。我检查了这个。
答案 0 :(得分:1)
不确定要从何处连接,以及要输入什么命令来测试连接性或环境如何。但这很可能是由于this known issue在externalTrafficPolicy
找不到运行节点的IP地址的情况下,Local
设置为kube-proxy
时无法访问节点端口上。
此link为问题提供了更多线索。从K8s 1.10开始,kube-proxy上的--hostname-override
显然不起作用。您必须在kube-proxy ConfigMap中指定HostnameOverride
选项。 here中还描述了一个修复程序,它将在本文写作的将来某个时候使其成为上游。
答案 1 :(得分:0)