欢迎光临散文网 会员登陆 & 注册

深究Kubernetes源码-Kubelet-3 Pod主流程-Pod DNS配置

2023-09-14 15:54 作者:黑暗光影DIY  | 我要投稿

基于kubernetes1.26

DNS功能官方文档可参考

https://kubernetes.io/zh-cn/docs/concepts/services-networking/dns-pod-service

主流程如下:

首先getHostDNSConfig获取并解析kubelet resolvConf配置文件。

getPodDNSType根据pod.spec.dnsPolicy匹配处理的三种DNS方式,dnsPolicy包括四种配置

  • "Default": Pod 从运行所在的节点继承名称解析配置

  • "ClusterFirst": 与配置的集群域后缀不匹配的任何 DNS 查询(例如 "www.kubernetes.io") 都会由 DNS 服务器转发到上游名称服务器。集群管理员可能配置了额外的存根域和上游 DNS 服务器。

  • "ClusterFirstWithHostNet": 对于以 hostNetwork 方式运行的 Pod,应将其 DNS 策略显式设置为 "ClusterFirstWithHostNet"。否则,以 hostNetwork 方式和 "ClusterFirst" 策略运行的 Pod 将会做出回退至 "Default" 策略的行为。

  • "None": 此设置允许 Pod 忽略 Kubernetes 环境中的 DNS 设置。Pod 会使用其 dnsConfig 字段所提供的 DNS 设置。

具体映射的三种处理方式为DNSNone,DNSHost,DNSCluster

  1. DNSNone生成空DNSConfig,则pod的dns配置从pod.spec.dnsConfig生成

  2. DNSHost则是resolvConfig配置dns加pod.spec.dnsConfig

  3. DNSCluster则根据以下逻辑生成,并最终附加pod.spec.dnsConfig

  • nameserver:kubelet clusterDNS配置

  • search:{pod.Namespace}.svc.{clusterDomain}  svc.{clusterDomain} {clusterDomain}

  • options: ndots:5

实际测试效果如下:

kubelet配置文件

/run/systemd/resolve/resolv.conf配置文件


深究Kubernetes源码-Kubelet-3 Pod主流程-Pod DNS配置的评论 (共 条)

分享到微博请遵守国家法律