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