k8s域名解析错误:pod中/etc/reslove.conf中nameserver和kube-dns中ip不一致

问题:

k8s集群中,某台node节点上,dns解析失败,进入pod中 查看/etc/reslove.conf 中nameserver和kube-dns不一致,如图:

 

pod中如下:

 

 

 

kube-dns如下:

 

 

 

造成这种现象的原因,可能是重装k8s集群的时候,这台node节点上kubelet的启动参数,用的是原来集群的配置文件,也就是/etc/systemd/system/kubelet.service.d/10-kubeadm.conf,(k8s组件是通过systemctl来管理的,因此可以在/etc/systemd/system)这个文件是原来集群的配置文件,其中kubelet的启动参数里--cluster-dns用的是原先的ip,所以导致dns解析失败。

 解决方案:

 

一,如果这个问题是在node节点上:

 

1.1,查看kubelet的启动参数:ps -ef |grep kubelet

 

 

 

 

 

1.2,修改/etc/systemd/system/kubelet.service.d/10-kubeadm.conf 文件中的--cluster-dns ,使它和kube-dns的ip一致:

  • sudo vim /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  • sudo cat /etc/systemd/system/kubelet.service.d/10-kubeadm.conf

 

 

 

1.3,重启kubelet:

  • sudo systemctl stop kubelet
  • sudo systemctl daemon-reload
  • sudo systemctl start kubelet

 

 

 

 

 

1.4,查看kubelet启动参数是否生效,生效后,dns解析问题就解决了

 

 

二,如果这个问题是mater节点上:

 

2.1,如果是mater节点上,/etc/systemd/system/kubelet.service.d/10-kubeadm.conf里是没有cluster-dns这个参数变量的,kubelet的参数都在/var/lib/kubelet/config.yaml中

 

 

 

 

2.2,重启kubelet

 

 

 

 

 参考:DNS 解析异常 - Kubernetes 实践指南 (imroc.cc)

 

 

 

 

 

 

 

 

 

posted @ 2022-12-22 19:30  年轻人——001  阅读(1361)  评论(0编辑  收藏  举报