写点什么

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

  • 2023-12-12
    广东
  • 本文字数:1342 字

    阅读完需:约 4 分钟

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

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

一、coreDNS 背景


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


二、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 的影响



  • Default:如果 dnsPolicy 被设置为“Default”,则名称解析 nameserver 配置将从 pod 运行的节点/etc/resolv.conf 继承。


# 节点/etc/resolv.conf配置nameserver X.X.X.Xnameserver X.X.X.Yoptions 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)。
复制代码


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

发布于: 刚刚阅读数: 4
用户头像

提供全面深入的云计算技术干货 2020-07-14 加入

生于云,长于云,让开发者成为决定性力量

评论

发布
暂无评论
容器中域名解析流程以及不同dnsPolicy对域名解析影响_容器_华为云开发者联盟_InfoQ写作社区