本文分享自华为云社区《容器中域名解析流程以及不同dnsPolicy对域名解析影响》,作者:可以交个朋友 。

一、coreDNS布景

部署在kubernetes集群中的容器事务经过coreDNS服务解析域名,Coredns基于caddy结构,将整个CoreDNS服务都建立在一个运用Go编写的HTTP/2 Web 服务器Caddy上。经过插件化(链)架构,以预装备的方式(configmap卷挂载内容装备)选择需要的插件编译,按序执行插件链上的逻辑,经过四种方式(TCP、UDP、gRPC和HTTPS)对外直接供给DNS服务。

容器中域名解析流程以及不同dnsPolicy对域名解析影响

二、kubelet经过修正容器/etc/resolv.conf文件使得容器中可解析域名

在kubernetes集群中,coreDNS服务和kube-apiserver通讯获取clusterip和serviceName的映射联系,而且coreDNS自身经过clusterip(默许 xx.xx.3.10,比方集群clusterip网段为10.247.x.x,则coreDNS对外露出服务的clusterip为10.247.3.10),我们知道操作系统域名服务器要害装备文件/etc/resolv.conf中的nameserver字段指定,所以只需要使得容器/etc/resolv.conf中 nameserver字段装备为coreDNS的clusterip地址即可。

那么谁来完结容器/etc/resolv.conf的修正和如何修正?kubelet负责拉起容器,启动参数中–cluster-dns字段对应值便是该集群coreDNS的clusterip地址,kubelet在拉起容器中,根据Pod的dnsPolicy选项,把该值修正注入到容器中。

三、Pod不同dnsPolicy对容器/etc/resolv.conf的影响

容器中域名解析流程以及不同dnsPolicy对域名解析影响

  • Default:假如dnsPolicy被设置为“Default”,则称号解析nameserver装备将从pod运转的节点/etc/resolv.conf继承。

    节点/etc/resolv.conf装备

    nameserver X.X.X.X nameserver X.X.X.Y options ndots:5 timeout:2 single-request-reopen

  • ClusterFirst:假如dnsPolicy被设置为“ClusterFirst”,则运用集群coredns的service 地址作为Pod内/etc/resolv.conf中nameserver装备。

    nameserver 10.247.3.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:5 timeout:2 single-request-reopen

  • ClusterFirstWithHostNet:对于运用hostNetwork网络形式运转的Pod,需明确设置其DNS策略“ClusterFirstWithHostNet”,否则 hostNetwork ClusterFirst实际效果 = Default

    nameserver 10.247.3.10 search default.svc.cluster.local svc.cluster.local cluster.local options ndots:5 timeout:2 single-request-reopen

  • **None:**它答应用户自定义Pod内/etc/resolv.conf装备,忽略Kubernetes环境中默许的DNS设置。应运用dnsConfigPod规范中的字段供给所有DNS设置 。

/etc/resolv.conf相关装备阐明

nameserver:表明指定的DNS服务地址IP,用于解析域名的服务器。
search:表明域名解析时指定的域名查找域。解析域名的时候,会依查找域次序构建域名解析地址。进行域名解析,直到解析即可。如:svcname.default.svc.cluster.local --> svcname.svc.cluster.local --> svcname.cluster.local
options:其他选项。最常见的选项装备有:
-   ndots值:判断域名解析地址中包括的“.”是否大于或等于ndots设定值,假如是,则以恳求解析域名地址作为全限制域名建议解析恳求,不再进行search域构建域名地址;假如小于ndots,则按照search域构建域名地址,再逐序建议解析恳求。
-   timeout:等候DNS服务器返回的超时时间。单位秒(s)。

点击关注,第一时间了解华为云新鲜技术~