1 问题
关机重启服务器出现了一个问题,访问集群部署的服务时出错。通过执行:
kubectl describe pod -n kube-system
后来排查发现出现了如下错误:
Warning DNSConfigForming 38m (x30 over 75m) kubelet Nameserver limits were exceeded, some nameservers have been omitted, the applied nameserver line is: 8.8.8.8 114.114.114.114 2409:8900:1910:20d9:5183:3bf:e5fb:b768
从上述错误字面上可以看出时kubelet nameserver超出了限制,最大不能超过3个。
2 解决方案
根据上述原因,需要修改resolv.conf文件
vim /etc/resolv.conf
这个是已经修改过的,原来这个地方出现了4个nameserver,删掉其中两个。然后重新启动docker、kubectl
systemctl restart docker
systemctl restart kubectl
再次访问集群服务,发现已经解决了上述问题。
3 工具推荐
可以使用KubeEye
curl -s https://experimental.sh1a.qingstor.com/v1.1.0/KubeEye-v0.1.0-linux-amd64.tar.gz | tar -xzv
使用该工具前请确保 ~/.kube/config 文件有效
该工具可以通过-h具体查询帮助文档,它可以实现如下功能
- 集群组件不健康
- 节点 NotReady
- ETCD 健康状况
- 磁盘损坏问题
- 应用容器配置 request、limit
- Pod 各种问题起不来
- 证书即将过期
- Docker 服务异常
- 存储空间不足
- yaml文件语法
可以用下述命令查询集群状态
./ke diag