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