DNS解析-K8S Pod的DNS策略

作用

Pod的Spec部分有两个字段dnsPolicydnsConfig来配置Pod的DNS解析。其中dnsPolicy参数的作用是指定Pod的DNS策略;dnsConfig的作用是在配置完解析策略后,补充DNS解析配置,也就是往容器的/etc/resolv.conf文件中补充一些配置。

启用pod的DNS策略配置

k8s 1.10版本后默认开启该特性。

...
spec:
  hostNetwork: true
  dnsPolicy: ClusterFirstWithHostNet
  dnsConfig:
    nameservers:
      - 10.16.1.2
      - 10.16.1.3
    searches:
      - baidu.com
    options:
     - name: ndots
       value: "2"
     - name: edns0
...

edns0含义参考

dnsPolicy配置说明

dnsPolicy可以配置四种策略。

  • None: 表示不使用集群、节点的解析,只使用dnsConfig中配置的解析。
  • Default:表示使用节点上的域名解析配置。即pod内的dns配置与节点上的/etc/resolv.conf配置相同。
  • ClusterFirst(默认配置):表示使用集群的DNS解析,即coreDNS中的解析。注意,如果同时设置hostNetwork为true的话,效果相当于Default策略。另外,如果coreDNS中配置了forward . /etc/resolv.conf或其他域名解析配置的话,ClusterFirst不仅可以解析到集群内部的服务,也可以使用节点resolv.conf配置的nameserver解析外部服务。
  • ClusterFirstWithHostNet:一般配合hostNetwork配置使用。设置hostNetwork为true后,Pod会使用节点的网络命名空间,此时无法与集群内其他Pod通信,设置dnsPolicy为ClusterFirstWithHostNet后,会将coreDNS服务地址等集群DNS服务配置加入到resolv.conf中,实现使用节点的网络栈情况下与集群其他Pod通信。最终效果为Pod网络命名空间使用节点网络命名空间,DNS解析使用ClusterFirst配置的DNS解析。

dnsConfig配置说明

dnsConfig的配置与Linux上/etc/resolv.conf的配置基本一致,此处不再赘述,可以参考此处
无论使用的dnsPolicy是什么,都可以配置dnsConfig来补充Pod的DNS解析配置。

参考:

https://juejin.cn/post/6844903665879220231
https://k8s-docs.netlify.app/en/docs/concepts/services-networking/dns-pod-service/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容