欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

K8S CoreDNS部署失败,问题分析

程序员文章站 2022-05-29 09:58:03
1. 查询k8s集群部署pod的基本情况 如下图,我们可知容器coredns和dnsutils都部署成功,但是由于域名解析的问题,导致coredns和dnsutils的容器不断重启(原因heath检查,无法请求成功,被kubelet重启了pod) 命令如下: root >> kubectl get ......

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

K8S CoreDNS部署失败,问题分析

# 然后记得保存,重启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 >>