云容器引擎 CCE-使用NodeLocal DNSCache提升DNS性能:使用NodeLocal DNSCache
使用NodeLocal DNSCache
有两种方式可以使用NodeLocal DNSCache:
- 自动注入:创建Pod时自动配置Pod的dnsConfig字段。(kube-system命名空间下的Pod不支持自动注入)
- 手动配置:手动配置Pod的dnsConfig字段,从而使用NodeLocal DNSCache。
自动注入
自动注入需要满足如下条件:
- 插件需要将enable_dnsconfig_admission参数配置为true
- 命名空间添加node-local-dns-injection=enabled标签
kubectl label namespace default node-local-dns-injection=enabled
- 新建Pod不位于kube-system和kube-public命名空间
- 新建Pod没有被打上禁用DNS注入node-local-dns-injection=disabled标签
- 新建Pod的网络为hostNetwork且DNSPolicy为ClusterFirstWithHostNet,或Pod为非hostNetwork且DNSPolicy为ClusterFirst
开启自动注入后,创建的Pod会自动添加如下dnsConfig字段,nameservers中除了NodeLocal DNSCache的地址169.254.20.10外,还添加了CoreDNS的地址10.247.3.10,保障了业务DNS请求高可用。
dnsConfig: nameservers: - 169.254.20.10 - 10.247.3.10 searches: - default.svc.cluster.local - svc.cluster.local - cluster.local options: - name: timeout value: '' - name: ndots value: '5' - name: single-request-reopen
手动配置
手动配置即自行给Pod加上dnsConfig配置。
创建一个Pod,将dnsconfig配置为169.254.20.10。
apiVersion: v1kind: Podmetadata: name: nginxspec: containers: - image: nginx:alpine name: container-0 dnsConfig: nameservers: - 169.254.20.10 searches: - default.svc.cluster.local - svc.cluster.local - cluster.local options: - name: ndots value: '2' imagePullSecrets: - name: default-secret