云容器引擎 CCE-使用NodeLocal DNSCache提升DNS性能:使用NodeLocal DNSCache

时间:2023-11-01 16:25:55

使用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
support.huaweicloud.com/usermanual-cce/cce_01_0362.html