K8S CoreDNS部署失败,问题分析
Posted itshare
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K8S CoreDNS部署失败,问题分析相关的知识,希望对你有一定的参考价值。
1. 查询k8s集群部署pod的基本情况
如下图,我们可知容器coredns和dnsutils都部署成功,但是由于域名解析的问题,导致coredns和dnsutils的容器不断重启(原因heath检查,无法请求成功,被kubelet重启了pod)
命令如下:
root >> kubectl get all --all-namespaces -o wide
root >> kubectl describe pod coredns-57bbd778b9-kxl7b -n kube-system
root >> kubectl logs coredns-57bbd778b9-kxl7b -n kube-system
2. 修改VM的DNS解析文件之前,
如下图:cat /etc/resolv.conf 中192.168.3.1是我VM物理机的网卡设置的DNS名称,这个是一个虚拟的错误的DNS地址,实际上是我路由器的IP。
docker exec -it fda365569efa /bin/bash,表示进入k8s容器dnsutils-ds-55fpd内部。
10.3.0.2,这个是我k8s集群中定义和创建的CoreDNS容器的ClusterIP,如果部署成功的话,内外网的域名或服务访问,都可以通过它做地址解析。
问题:如下图,在容器内部,不能正常解析 外网地址www.baidu.com 和 内部地址cluster.local。这里说明是物理机VM的nameserver配置错误导致的。
3. 修改VM的DNS解析文件之后,
# 修改VM机器上的网卡配置文件eno01,如下图替换为正确的DNS地址。
# 这里我们用谷歌的DNS域名地址8.8.8.8 和 本地K8S集群CoreDNS的CluterIP地址10.3.0.2。
root >> vi /etc/sysconfig/network-scripts/ifcfg-eno01
# 然后记得保存,重启VM机器之后,我们在重新检查CoreDNS解析是否正常,操作如下:
root >> cat /etc/sysconfig/network-scripts/ifcfg-eno01
root >> cat /etc/resolv.conf
root >> ping -c 1 www.baidu.com
root >> ping -c 1 10.3.0.2
root >> ping -c 1 kubernetes
root >> nslookup www.baidu.com
root >> nslookup kubernetes
root >> nslookup kube-dns.kube-system.svc
root >> nslookup kube-dns.kube-system.svc.cluster.local
root >> nslookup cluster.local
#### docker 内部检查dns 解析
root >> docker ps | grep dns
dnsutils root >>
以上是关于K8S CoreDNS部署失败,问题分析的主要内容,如果未能解决你的问题,请参考以下文章
k8s部署init报错:[ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns/coredns:v1.8.6: output: Error