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 >>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM