IT袋

当前位置:主页 > 经验教程 > 建站编程 >

K8S故障处理

K8S故障处理:coredns状态异常处理记录

时间:2024-01-15 21:47:56 来源:IT袋 作者:马勇
导读:K8S故障处理,一篇关于K8S故障处理IT技巧方面的经验,一起来看看吧! 在Kubernetes中,coredns作为一个服务发现的配置中心,K8S中创建的 Service 和 Pod 都会在其中自动生成相应的 DNS 记录,

K8S故障处理

一篇关于K8S故障处理IT技巧方面的经验,一起来看看吧!

在Kubernetes中,coredns作为一个服务发现的配置中心,K8S中创建的 Service 和 Pod 都会在其中自动生成相应的 DNS 记录,能够用作集群内部的dns解析,作为一个重要组件,coredns一般都采用daemonSet方式部署。

本文记录了几种场景下coredns异常问题。

K8S故障处理

1. 服务器重启后coredns异常

服务器重启后,K8S集群内coredns状态为CrashLoopBackOff,coredns版本:1.8.3,查看coredns日志如下

[root@reg ~]# kubectl  logs -f coredns-bbckw   -n kube-system
plugin/forward: no nameservers found

查看/etc/resolv.conf的dns配置,配置里一个nameserver都没有

[root@reg ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localhost

会导致 coredns 无法起来刷日志,查看configmap的 coredns 的配置里有如下配置

        forward . /etc/resolv.conf {
            max_concurrent 1000
        }

coredns的/etc/resolv.conf是挂载的宿主机的,会读取文件里的

nameserver配置,所有coredns无法启动的原因找到了,临时解决方式就是重新配置/etc/resolv.conf配置

为了防止下次重启再次丢失,彻底解决方式如下

编辑该文件,在[main]下面加入dns=none

vi /etc/NetworkManager/NetworkManager.conf
[main]
dns=none

2. 服务器重启后coredns异常

场景:/etc/resolv.conf文件丢失

[root@02-3 ~]# kubectl  get pods -owide -n  kube-system
NAME                                  READY   STATUS              RESTARTS   AGE    IP             NODE           NOMINATED NODE   READINESS GATES
coredns-5mftn                         1/1     Running             2          174d   172.27.0.214   10.10.28.10    <none>           <none>
coredns-9bnl8                         1/1     Running             2          62d    172.27.4.31    10.10.28.141   <none>           <none>
coredns-9tmcj                         0/1     ContainerCreating   0          105s   <none>         10.10.28.116   <none>           <none>

查看pod的日志

[root@02-3 ~]# kubectl describe pods coredns-9tmcj -n kube-system
........
Events:
  Type     Reason                  Age                  From               Message
  ----     ------                  ----                 ----               -------
  Normal   Scheduled               2m11s                default-scheduler  Successfully assigned kube-system/coredns-9tmcj to 10.10.28.116
  Warning  FailedCreatePodSandBox  1s (x11 over 2m11s)  kubelet            Failed to create pod sandbox: open /etc/resolv.conf: no such file or directory

检查dns的配置文件

[root@02-3 ~]# ll /etc/resolv.conf
ls: 无法访问/etc/resolv.conf: 没有那个文件或目录

相关阅读