如何在启用cloud-provider=aws的k8s集群中设置service 的externalTrafficPolicy为local

关于externalTrafficPolicy的local和cluster两个值,在之前的文章中,我们已经讲过。大家可以参考从service的externalTrafficPolicy到podAntiAffinity这篇文章。

而在aws中,假如你自己部署k8s集群,并且启用了cloud-provider=aws,那么需要做一些其他的工作,否则service 的externalTrafficPolicy为local后,无法访问。

  • 首先保证kube-proxy启动参数里加入hostname-override设置
        - --hostname-override=$(NODE_NAME)
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: spec.nodeName
  • 然后需要设置VPC的DHCP domainname 为 .compute.internal。

参考资料:

当您创建 VPC 时,我们会自动创建 DHCP 选项集,并将它们与 VPC 相关联。此设置包括两个选项:domain-name-servers=AmazonProvidedDNS 和 domain-name=domain-name-for-your-region。

iyacontrol
1.4k 声望2.7k 粉丝

专注kubernetes,devops,aiops,service mesh。