将“ externalTrafficPolicy”设置为“本地”时无响应

时间:2018-10-15 12:59:29

标签: kubernetes

设置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必须在节点上可用,因为流量不会路由到其他节点。我检查了这个。

2 个答案:

答案 0 :(得分:1)

不确定要从何处连接,以及要输入什么命令来测试连接性或环境如何。但这很可能是由于this known issueexternalTrafficPolicy找不到运行节点的IP地址的情况下,Local设置为kube-proxy时无法访问节点端口上。

link为问题提供了更多线索。从K8s 1.10开始,kube-proxy上的--hostname-override显然不起作用。您必须在kube-proxy ConfigMap中指定HostnameOverride选项。 here中还描述了一个修复程序,它将在本文写作的将来某个时候使其成为上游。

答案 1 :(得分:0)

正如 Jagrut 所说,在 Rico 的答案中共享的 link 不再包含补丁所需的部分,所以我将分享一个不同的线程,stacksonstacks 的答案对我有用: here 。此解决方案包括编辑 kube-proxy.yaml 以包含 HOST_IP 参数。

相关问题