CoreDNS排查

CoreDNS排查

一 问题原因

阿里云ecs部署k8s,启动pod无法访问外网的域名和阿里云内部域名 但公网IP+内网IP地址则正常
复现很简单几个场景:

  • nacos zookeeper 集群3台 使用heardless模式

  • 微服务应用写阿里云rds域名启动时候连接

二 排查思路和命令

##查看运行状态
kubectl get pods --namespace kube-system -l k8s-app=kube-dns

##检测宿主机dns
cat /etc/resolv.conf
options timeout:2 attempts:3 rotate single-request-reopen
; generated by /usr/sbin/dhclient-script
nameserver 100.100.2.136
nameserver 100.100.2.138

## 查看coredns配置文件
kubectl edit configmap coredns -n kube-system

三解决方案

在coredns配置文件添加公网的dns ip+如果是阿里云rds 可以用hosts方式写入这样pod都可以全局引用
参考修改脚本
https://www.wangairui.com/docs/k8s/k8s-1emuellugpmvq

四 coredns滚动更新第三方工具

下载地址
https://www.aliyundrive.com/s/RVehG1Zi3vV

chmod +x kubectl-auto-rollout-amd64
mv kubectl-auto-rollout-amd64 /usr/biin/kubectl-auto-rollout-amd64

###使用方法
修改了coredns内容
kubectl edit configmap coredns -n kube-system
##滚动更新
###查看命名空间coredns是否存在
kubectl get deploy -n kube-system

###更新
kubectl-auto-rollout-amd64 -n kube-system deployment coredns