Kubernetes网络权威指南读书笔记通过域名访问服务
书籍来源:《Kubernetes网络权威指南:基础、原理与实践》
一边学习一边整理读书笔记,并与大家分享,侵权即删,谢谢支持!
附上汇总贴:《Kubernetes网络权威指南》读书笔记 | 汇总_COCOgsta的博客-CSDN博客
在一个Kubernetes集群中,DNS服务是非必需的,因此无论是Kube-dns还是CoreDNS,通常以插件(add-on)的方式安装,作为运行在集群上的应用。3.7.1DNS服务基本框架
Kubernetes DNS是用来解析Kubernetes集群内的Pod和Service域名的,而且一般情况下只供集群内的容器使用,不给外人使用。
Kubernetes的DNS应用部署好后,会对外暴露一个服务,集群内的容器通过访问该服务的Cluster IP+53端口获得域名解析服务,而这个Service的ClusterIP一般情况下都是固定的。
当Kubernetes的DNS服务Cluster IP分配后,系统(一般是指安装程序)会给Kubelet配置--cluster-dns=启动参数,DNS服务的IP地址将在用户容器启动时传递,并写入每个容器的/etc/resolv.conf文件。DNS服务IP即上文提到的DNS Service的Cluster IP。
Kubelet的--cluster_domain=参数支持配置集群域名后缀,默认是cluster.local。
打开Kubelet配置:
3.7.2 域名解析基本原理
对于Service,Kubernetes DNS服务器会生成三类DNS记录,分别是A记录、SRV记录和CNAME记录。A记录
A记录(A Record)是用于将域或子域指向某个IP地址的DNS记录的最基本类型。记录包括域名、解析它的IP地址和以秒为单位的TTL。
Kubernetes为"normal"和"headless"服务分配不同的A Record name。"headless"服务与"normal"服务的不同之处在于它们未分配Cluster IP且不执行负载均衡。
A记录与普通Service和headless Service有区别。普通Service的A记录的映射关系是:
headless Service的A记录的映射关系是:
SRV记录
SRV记录是通过描述某些服务协议和地址促进服务发现的。SRV记录通常定义一个符号名称和作为域名一部分的传输协议(如TCP),并定义给定服务的优先级、权重、端口和目标:
优先级和权重通常用于建议指定使用某些服务器。记录中的最后两个值定义了要连接的端口和主机名,以便与服务通信。
Kubernetes DNS的SRV记录是按照一个约定俗成的规定实现了对服务端口的查询:
CNAME记录
CNAME记录用于将域或子域指向另一个主机名。为此,CNAME使用现有的A记录作为其值。相反,A记录会解析为指定的IP地址。这是一种跨集群服务发现方法。3.7.3DNS使用
下面运行一个带nslookup命令的busybox容器,说明Kubernetes域名解析的使用。
给出带nslookup命令的busybox Pod示例yaml文件:
先来查询Kubernetes默认的API Server服务Kubernetes的IP地址:
如上所示,Kube-dns的IP地址是10.0.0.1,而API Server的Cluster IP地址是10.0.0.10。
在default namespace下又创建了一个名为whoami的服务,并做以下域名解析动作:
如上所示,发起域名解析请求的busybox Pod和whoami服务均在default namespace下,因此以下所有域名都能被正确解析并且返回相同的结果。
查看busybox Pod的DNS配置文件,可以看到如下DNS Server的地址及搜索的domain列表:
其中,DNS Server的IP地址是10.0.0.1。options ndots:5的含义是当查询的域名字符串内的点字符数量超过ndots(5)值时,则认为是完整域名,直接解析,否则Linux系统会自动尝试用default.pod.cluster.local、default.svc.cluster.local或svc.cluster.local补齐域名后缀。
最后,运行DNS Pod可能需要特权,即配置Kubelet的参数:--allow-privileged=true。Kubernetes域名解析策略
Kubernetes域名解析策略对应到Pod配置中的dnsPolicy,有4种可选策略,分别是None、ClusterFirstWithHostNet、ClusterFirst和Default,其中:None:从Kubernetes 1.9版本起引入的一个新选项值。它允许Pod忽略Kubernetes环境中的DNS设置。应使用dnsConfigPod规范中的字段提供所有DNS设置;ClusterFirstWithHostNet:对于使用hostNetwork运行的Pod,用户应该明确设置其DNS策略为ClusterFirstWithHostNet;ClusterFirst:任何与配置的群集域后缀(例如cluster.local)不匹配的DNS查询(例如"www.kubernetes.io" )将转发到从宿主机上继承的上游域名服务器。集群管理员可以根据需要配置上游DNS服务器;Default:Pod从宿主机上继承名称解析配置。3.7.4 调试DNS
如果nslookup命令由于某种原因失败,则有几种调试和排除故障的方案。若DNS失败,通常会得到如下响应:
如果出现此错误,则需要做的第一件事是检查DNS配置是否正确。
查看容器中的resolv.conf文件:
验证是否正确设置了搜索路径和名称服务器:
如果/etc/resolve.conf的所有条目都是正确的,则需要检查kube-dns/coredns插件是否已启用,或者检查kubedns/coredns Pod是否正在运行。
如果Pod正在运行,则全局DNS服务可能存在问题。
可能还需要检查后端DNS Endpoint是否准备好:
从乒坛神童到3次大赛早早出局,你如何评价张本智和?张本智和压力太大,日本球迷对归化苛刻,日本的归化是剑走偏锋,国乒让日本人心态失衡事实上这两年的中日乒乓球交流很多,日本的乒乓球器材在国内大卖,我们不再仅仅满足红双喜和友谊729,蝴
玩K歌是用耳机好,还是用麦克风好?这个问题让我来回答你吧。玩K歌是用耳机好,还是用麦克风好?这个得看你的要求效果了,如果是自己玩的,要求不高,就用耳机。如果要求对录出来的效果和音质高,就使用麦克风。下面就和你介绍一
索尼的黑科技体现在旗下哪些产品上?索尼这个企业很奇特,经常拿出科技含量领先其它公司几年的产品,因而被称为黑科技最多的厂商,由此也造就了一批索粉。没错,那些经常默念索尼大法好的人,就是了。他们可能是索尼大法的受害者,
你们都是怎么祛痘成功的?这个回答,我认为应该分为两种人,男人,女人!!!女人(woman)一个集万千宠爱为一身的第一点如果有条件买一些好的化妆品,自己去品鉴那个更适合你的皮肤。没有条件的制造条件也可以做到
如果给你一件小西装,你会怎样穿搭?说到西装这个单品那必须是人手一件的程度,溜溜姐已经分享过很多次了,不管是搭配风格还是年龄跨度,西装从18岁到50岁这个跨度来讲都是非常百搭且百变的出街致胜单品。完美融入任何场合,不
如果警察等职业为卧底必须吸毒怎么办?缉毒警察可是非常危险的,毒贩每一个都是亡命之徒,毒贩才不管妨碍自己贩毒的人是谁,只要妨碍他们贩毒,他们就是会动手处理掉,就算是面对警察这些毒贩都同样会丧心病狂,所以每一年都会有一些
越来越多的农民进城打工,出现越来越多的的荒地,耕地怎么保障?不要紧,有这么大一个国家作后盾力量,还有什么解决不了的事情。正如独生子女是当年政府提倡并执行的,所说的独生子女好,政府来养老,现在很多措施就是政府在兑现当年承诺,允许生二胎三胎不正
大众宝来和日产轩逸哪个可以入手?宝来的顶配竟然只够到了轩逸的低配。轩逸2021款1。6LXECVT舒享版官方指导价11。90万元,市场优惠5000元,经销商售价11。40万元。宝来2020款1。5L自动豪华型官方
什么品种可以称为最好吃的荔枝?感谢邀请,针对您提出的问题,农医生为您答疑解惑。荔枝的品种有很多,每一个品种都有其独特的优势,广东是我国厉害的主要产地之一,其中挂绿这一品种在广东乃至全世界都是享负盛名的,其成熟时
蒸熟的糯米可以做什么吃?蒸熟的糯米还可以做糍粑或者做一道我们闽南的小吃,炸糯米饭块。做法1。糯米提前泡水2小时。2。糯米倒入电饭煲,加少许盐和油搅拌均匀,加水(和米持平就好,太多水,蒸出来的饭太烂),按煮
电视清晰度比投影仪高那么多,为啥还有很多人选择投影仪?这是一个智商问题。现在还选择投影仪而不买液晶电视,是惯性导致的,是不了解现在液晶电视价格造成的。看影视都喜欢大尺寸的,过去两三年前,同样的尺寸80100寸,液晶电视价格非常昂贵,2