如何在启用 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。