真去挖一挖集群 DNS
这个实习真的在Kubernetes上帮忙。
VM中实际上有一个k3s。CoreDNS真的在运行,询问 留下日志,帕德是实际的容器。所以“找一个名字的问题 可以数几次出去。
第一次打开需要2分钟左右,因为需要VM启动并安装k3s。
目标
帕德从头到尾跟着寻找名字的路线,ndots:5做的
确认了直接计算隐藏的费用后dnsConfig请回复。
为什么重要
在群集中,报告“慢”的大部分是DNS。但是应用程序 在指标上不容易抓住。一个请求寻找一个名字,询问五次。 虽然其中四个是NXDOMAIN,但从应用程序的角度来看,只是“有点慢 是请求”。CoreDNS的负担正在悄悄增加,有一天,如果路由器数量增加的话 到那时就会爆发。
原因是resolv.conf只有一行。ndots:5点少于5个的名称是
意思是先粘贴搜索域名再尝试。example.com有一个优点
example.com.default.svc.cluster.local开始问。在群集里
要求简短写名字的便利,在外面使用名字时就会变成实际的费用。
阶段
- 确认CoreDNS在哪里,做什么**
/root/k8sdns/coredns.txt**请保存到。kube-dns服务中必须包含ClusterIP和Corefile专业。 - 垫子里的**
/etc/resolv.conf** 就那样 **/root/k8sdns/resolv.txt**请保存到。nameserver·search·options必须有三行。 web的Deployment(复制品2,nginx:1.27-alpine,端口名称http)创建与之同名Service,查询长名字和短名字**/root/k8sdns/svc-a.txt**请保存到。必须显示相同的ClusterIP。- 在CoreDNS的Corefile中
log打开插件,example.com用两种工具分别查询,然后用CoreDNS记录的查询次数来计算。/root/k8sdns/ndots.txt**请保存到。queries_nslookup=科queries_getaddrinfo=从两行开始,在下面粘贴日志。- busybox的
nslookup一次 curl一次(curlimages/curl:8.10.1) 两个数字**有很大的不同。**为什么不一样是这个阶段的核心。
- busybox的
web-h的无头Service(clusterIP: None)并制作查询结果**/root/k8sdns/headless.txt**请保存到。手柄IP必须保持原样。web查询的SRV记录/root/k8sdns/srv.txt**请保存到。lowdots这样的垫子dnsConfig罗**ndots: 1给以并放置,4次的curl用同样的工具重新数一遍提问次数/root/k8sdns/fixed.txt请保存到**(queries=包括线)。必须在3次以内。换工具的话就不成立比较了。/root/k8sdns/report.md在dns_ip=,queries_before=,queries_after=和三行一起ndots为什么是问题,还有**nslookup请写下为什么重新登录后看不到问题**。
参考
- 查询工具在画布中写入。
kubectl run q --rm -it --image=busybox:1.36 --restart=Never -- nslookup <이름>这个是最简单的。 - Corefile是
kubectl -n kube-system get cm coredns -o yaml看看。修理的时候kubectl -n kube-system edit cm coredns后面kubectl -n kube-system rollout restart deploy coredns请做。 - 日志是
kubectl -n kube-system logs deploy/coredns这样看。如果想在几百年前清空一次日志,可以重新启动CoreDNS。 - SRV名字是
_<포트이름>._<프로토콜>.<서비스>.<네임스페이스>.svc.cluster.local是。如果端口没有名字,SRV就不会被创建。 - 4次两个数字不同的理由:busybox的
nslookup因为直接说DNS协议search哇ndots不读。普通的应用程序是getaddrinfo呼叫,对方按照resolv.conf的原样,分别询问A和AAAA。 - 计数日志时,请在计数前重新启动CoreDNS。重新启动就是清除日志的方法,这样才能避免前一步的查询混在一起。
- 常见的错误1:在名字的末尾加上点(
example.com.). 因为绝对是名字,所以跳过搜索域名试图学习的东西就会消失。 - 常见的错误2:在5次中
clusterIP: None去掉的话。那么因为是普通的服务,所以只会返回一个ClusterIP。
CoreDNS在哪里
确认CoreDNS在哪里,做什么**/root/k8sdns/coredns.txt**请保存到。kube-dns服务中必须包含ClusterIP和Corefile专业。
kube-dns在kube-system上寻找名为的服务,coredns同时包含ConfigMap的Corefile。因为名字是CoreDNS,服务名称是kube-dns,是因为继承了以前实现的名字。
帕德在看什么找名字?
垫子里的**/etc/resolv.conf** 就那样 **/root/k8sdns/resolv.txt**请保存到。nameserver·search·options必须有三行。
浮动一个分区,直接读取其中的/etc/resolv.conf。它不应该是VM本身的resolv.conf,而是分区内部的——两者完全不同。
服务名称成为地址的那一刻
web的Deployment(复制品2,nginx:1.27-alpine,端口名称http)创建与之同名Service,查询长名字和短名字**/root/k8sdns/svc-a.txt**请保存到。必须显示相同的ClusterIP。
创建Deployment和Service后,在相同命名空间的文件夹中web科web.default.svc.cluster.local分别查询。成为短名字的原因是多亏了搜索域名。
一个名字问了几次问题
在CoreDNS的Corefile中log打开插件,example.com用两种工具分别查询,然后用CoreDNS记录的查询次数来计算。/root/k8sdns/ndots.txt**请保存到。queries_nslookup=科queries_getaddrinfo=从两行开始,在下面粘贴日志。
- busybox的
nslookup一次 curl一次(curlimages/curl:8.10.1) 两个数字**有很大的不同。**为什么不一样是这个阶段的核心。
在Corefile上log输入一行,重新启动CoreDNS后,在Pad上example.com只查询一次后,会收到日志。如果在结尾加上点(example.com.) 跳过搜索域,请不要附加。
无头会给你什么回报?
web-h的无头Service(clusterIP: None)并制作查询结果**/root/k8sdns/headless.txt**请保存到。手柄IP必须保持原样。
clusterIP: None制作和查询服务。与普通的服务不同,会出现多个地址。
用名字查找端口号
web查询的SRV记录/root/k8sdns/srv.txt**请保存到。
SRV名字是_<포트이름>._tcp.<서비스>.<네임스페이스>.svc.cluster.local是。在第3阶段将...放入端口。http给它起了一个名字。
降低ndots并修改
lowdots这样的垫子dnsConfig罗**ndots: 1给以并放置,4次的curl用同样的工具重新数一遍提问次数/root/k8sdns/fixed.txt请保存到**(queries=包括线)。必须在3次以内。换工具的话就不成立比较了。
帕德规格的dnsConfig.options在{name: ndots, value: "1"}放入。那么即使只有一个点,也不会经过搜索域。
学到了什么
/root/k8sdns/report.md 在dns_ip=,queries_before=,queries_after=和三行一起ndots为什么是问题,还有**nslookup请写下为什么重新登录后看不到问题**。
dns_ip=,queries_before=,queries_after=和三行一起,在正文中写下ndots为什么是问题。