coredns缓存nodelocal dns cache :53: bind: address already in use错误处理
起因
事情起因是Kubernetes集群内的服务无法互相访问了
分析问题
因为Kubernetes集群内的服务都是通过service、pod的名称作为域名到coredns解析Cluster IP、Node IP等访问
所以我去查看了kube-system
命名空间的coredns,coredns
运行正常,但是我做了dns cache,Node local dns
这个服务没有起来,所以导致集群域名解析在这里失败了
处理问题
查看Node local dns日志,读取配置正常,中间的错误时一些缓存暂不影响,最后是因为端口占用所以无法启动
2022/11/28 02:11:01 [INFO] Using Corefile /etc/coredns/Corefile
2022/11/28 02:11:01 [ERROR] Failed to read node-cache coreFile /etc/coredns/Corefile.base - open /etc/coredns/Corefile.base: no such file or directory
2022/11/28 02:11:01 [ERROR] Failed to sync kube-dns config directory /etc/kube-dns, err: lstat /etc/kube-dns: no such file or directory
Listen: listen tcp 169.254.25.11:53: bind: address already in use
容器内部怎么会有占用端口呢,容器内只有一个服务,然后想起来,dns服务是会映射到宿主机的
查看宿主机的端口占用
sudo lsof -i tcp:53
好家伙这么多
杀掉占用的进程,前提是这些进程已确认没有用,我这里确认没有用,是一些状态不正确的进程,也是之前的DNS端口占用进程
sudo kill -9 841
重启Node local dns
一切正常