当 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 需要在一个节点上可用,因为流量不会路由到其他节点。我检查了这个。
最佳答案
不确定您从哪里连接以及您正在键入什么命令来测试连接或您的环境是什么样的。但这很可能是由于 this known issue使用 externalTrafficPolicy
无法访问节点端口的地方设置为 Local
如果kube-proxy
找不到运行它的节点的 IP 地址。
此 link对这个问题有更多的了解。显然 --hostname-override
从 K8s 1.10 开始,kube-proxy 上的 kube-proxy 不起作用。您必须指定 HostnameOverride
kube-proxy ConfigMap 中的选项。还有一个修复描述 here这将使它在撰写本文后的某个时候成为上游。
关于kubernetes - "externalTrafficPolicy"设置为 "Local"时无响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52817382/