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

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
火星探测器背后的人工智能:从原理到实战的强化学习
本文详细探讨了强化学习在火星探测器任务中的应用。从基础概念到模型设计,再到实战代码演示,我们深入分析了任务需求、环境模型构建及算法实现,提供了一个全面的强化学习案例解析,旨在推动人工智能技术在太空探索中的应用。 关注TechLead,分享AI全维度知识。作者拥有10+年互联网服务架构、AI产品研发经验、团队管理经验,同济本复旦硕,复旦机器人智能实验室成员,阿里云认证的资深架构师,项目管理专业人士,上亿营收AI产品研发负责人。 一、引言 火星,作为人类探索太空的下一个重要目标,一直吸引着科学家们的眼球。火星探测器作为探索这一未知世界的先锋,承担着巨大的任务和挑战。在这一任务中,强化学习(Reinforcement Learning, RL)作为一种智能学习方法,为火星探测器的自主决策提供了新的可能性。 强化学习,简而言之,是让计算机通过与环境的交互,自主学习如何做出最优的决策。在火星探测任务中,由于火星环境的复杂性和不确定性,传统的编程方法难以覆盖所有潜在的情况。因此,强化学习在这里扮演着至关重要的角色。它允许探测器在模拟环境中进行大量的试验和错误,从而学习如何在各种复杂环境下作出最佳决...
- 下一篇
C++ Web 框架 1.5.1 发布,支持 HTTP/2
距离上次发布过去10多天,调整在框架在HTTP/2压力测试表现,调试版本不限制流复用数量,产品版本限制512次,看正常浏览器都是限制在200以下。 所以如果是API调用一个链接复用512次需要关闭,重新链接。 这版本更新了后台演示程序 访问地址为admin/main 1.特性🔥🔥🔥🔥🔥 ✅ 1. 自带json编解码不用第三方库,标准json支持 ✅ 2. 支持多域名网站 ✅ 3. 支持多域名ssl 服务端 ✅ 4. 支持http/1.1、http/2协议 ✅ 5. 支持websocket服务端 ✅ 6. 框架自带websocket推送,支持定时推送到webscoket客户端 ✅ 7. 支持httpclient get post,同步异步、协程模式,数据采集 ✅ 8. 框架自带ORM,使用链接池方式,目前支持mysql ✅ 9. 框架自带线程池,和用户代码运行的线程池 ✅10. 框架使用asio自带的协程 ✅11. 框架特色是I/O 使用协程池 用户代码运行使用线程池,类似GO那种调度,只是针对http请求调度 ✅12. 框架支持普通文件gzip、br,并支持缓存到磁盘,下次不...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS7,CentOS8安装Elasticsearch6.8.6