kubernetes svc设置externalTrafficPolicy无法访问题

kubernetes svc有一个参数externalTrafficPolicy当设置成Local的时候可以追踪,访问的来源的ip,但是就只能通过pod所在节点的nodeport才能访问,不是所有的节点都可以访问了。
当我们应用过程中发现设置了externalTrafficPolicy:Local以后svc死活都不能访问,后来经过一系列排查iptables和kube-proxy终于发现了解决办法。

在kube-proxy启动参数里面需要设置--hostname-override:

        - --hostname-override=$(NODE_NAME)
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName

然后就可以正常使用了,过程参考文章:
https://stackoverflow.com/questions/47345327/why-unable-to-access-a-service-if-setting-externaltrafficpolicy-to-local-in-a-ku
https://ieevee.com/tech/2017/09/18/k8s-svc-src.html#%E5%AE%9E%E7%8E%B0iptables

你可能感兴趣的:(kubernetes svc设置externalTrafficPolicy无法访问题)