容器中域名解析流程以及不同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.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相关配置说明

sql 复制代码
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)。

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

相关推荐
生活爱好者!2 小时前
哇!影视新玩法!docker部署NEOWATCH NAS
运维·docker·容器
●VON5 小时前
Flutter 鸿蒙插件适配实战:用 clipboard_watcher 0.3.0 监听剪贴板变化
flutter·华为·harmonyos
cpolar技术支持5 小时前
Docker 容器启动失败怎么查?端口、日志、权限与网络排障完整教程
linux·docker·容器·cpolar·网络排障
昇腾知识体系6 小时前
CANN 安装升级避坑:version.cfg 查版本、银河麒麟找不到驱动、nnrt --version 无输出排查
人工智能·华为·知识图谱
Lsetea7 小时前
Kubernetes 1.37 Pod证书怎么签发:Signer与mTLS信任链排查
云原生·kubernetes·ssl证书·tls·mtls
新时代牛马8 小时前
docker run 起不来?从dockerd、containerd 到runc 一条线讲透
运维·docker·容器
努力努力再努力wz10 小时前
【Docker 入门系列】:从 Namespace、CGroup 到 LXC:理解容器运行时、rootfs 与 LXC 实战
运维·docker·容器
JavaPub-rodert11 小时前
Docker 多阶段构建:为什么生产环境镜像可以小 90%
运维·docker·容器
2601_9622184711 小时前
万象生鲜系统多账套隔离技术适配集团生鲜企业集团化数字化管控
大数据·运维·微服务·云原生·架构