CrashLoopBackOff中的Kubernetes CoreDNS

时间:2018-11-30 14:19:12

标签: docker kubernetes centos7 coredns

我知道这个问题被问了十遍,但没有任何帮助通过互联网搜索。

我的设置:

CentOS Linux release 7.5.1804 (Core)
Docker Version: 18.06.1-ce
Kubernetes: v1.12.3

由官方指南及其以下版本安装:https://www.techrepublic.com/article/how-to-install-a-kubernetes-cluster-on-centos-7/

CoreDNS吊舱处于Error / CrashLoopBackOff状态。

kube-system   coredns-576cbf47c7-8phwt                 0/1     CrashLoopBackOff   8          31m
kube-system   coredns-576cbf47c7-rn2qc                 0/1     CrashLoopBackOff   8          31m

我的/etc/resolv.conf:

nameserver 8.8.8.8

也尝试使用我的本地dns-resolver(router)

nameserver 10.10.10.1

设置和初始化:

kubeadm init --apiserver-advertise-address=10.10.10.3 --pod-network-cidr=192.168.1.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

我尝试通过以下方法解决此问题: 编辑coredns:root @ kub〜]#kubectl编辑cm coredns -n kube-system 并更改

proxy . /etc/resolv.conf

直接指向

proxy . 10.10.10.1

或     代理 。 8.8.8.8

也试图:

kubectl -n kube-system get deployment coredns -o yaml |   sed 's/allowPrivilegeEscalation: false/allowPrivilegeEscalation: true/g' |   kubectl apply -f -

仍然没有任何帮助。

日志中的错误:

plugin/loop: Seen "HINFO IN 7847735572277573283.2952120668710018229." more than twice, loop detected

另一个线程-coredns pods have CrashLoopBackOff or Error state根本没有帮助,因为我还没有找到那里描述的任何解决方案。没有任何帮助。

5 个答案:

答案 0 :(得分:2)

即使我遇到这样的错误,也可以按照以下步骤成功地工作。

但是,您错过了8.8.4.4

sudo nano等/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4

运行以下命令以重新启动守护程序和docker服务

sudo systemctl daemon-reload

sudo systemctl restart docker

如果您使用的是kubeadm,请确保从master删除整个集群,然后再次置备集群。

kubectl drain <node_name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node_name>
kubeadm reset

一旦您配置了新集群

kubectl get pods --all-namespaces

应该给出低于预期的结果

NAMESPACE     NAME                       READY   STATUS    RESTARTS   AGE
kube-system   calico-node-gldlr          2/2     Running   0          24s
kube-system   coredns-86c58d9df4-lpnj6   1/1     Running   0          40s
kube-system   coredns-86c58d9df4-xnb5r   1/1     Running   0          40s
kube-system   kube-proxy-kkb7b           1/1     Running   0          40s
kube-system   kube-scheduler-osboxes     1/1     Running   0          10s

答案 1 :(得分:1)

通常在coredns无法与kube-apiserver对话时发生:

检查您的kubernetes服务是否在默认名称空间中

$ kubectl get svc kubernetes
NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.96.0.1      <none>        443/TCP        130d

然后(您可能必须创建一个Pod):

$ kubectl -n kube-system exec -it <any-pod-with-shell> sh
# ping kubernetes.default.svc.cluster.local
PING kubernetes.default.svc.cluster.local (10.96.0.1): 56 data bytes

此外,尝试从端口443进入端口:

# telnet kubernetes.default.svc.cluster.local 443 # or
# curl kubernetes.default.svc.cluster.local:443

答案 2 :(得分:1)

$ kubectl编辑cm coredns -n kube-system 删除“循环”,保存并退出 重新启动主节点。这对我来说是工作。

答案 3 :(得分:1)

我在 Docker (KIND) 设置中的本地 k8s 中遇到了同样的问题。 CoreDns pod 出现崩溃循环退避错误。

使 Pod 进入运行状态的步骤:

正如 Tim Chan 在这篇文章中所说的,通过引用 github 问题链接,我做了以下事情

  1. kubectl -n kube-system edit configmaps coredns -o yaml
  2. 修改部分 forward . /etc/resolv.confforward . 172.16.232.1(我暂时设置为 8.8.8.8)
  3. 删除一个 Coredns Pod,或者可以等待一段时间 - Pod 将处于运行状态。

答案 4 :(得分:0)

我得到的错误是:

<块引用>

连接:没有到主机的路由","time":"2021-03-19T14:42:05Z"} 崩溃回退

kubectl -n kube-system logs coredns-d9fdb9c9f-864rz 显示的日志中

问题在https://github.com/coredns/coredns/tree/master/plugin/loop#troubleshooting-loops-in-kubernetes-clusters

中提到

tldr; 原因:/etc/resolv.conf 以某种方式更新。原来的位于 /run/systemd/resolve/resolv.conf: 例如:

<块引用>

域名服务器 172.16.232.1

快速修复,编辑核心文件:

$ kubectl -n kube-system edit configmaps coredns -o yaml

forward . /etc/resolv.conf替换forward . 172.16.232.1 例如:

apiVersion: v1
data:
  Corefile: |
    .:53 {
        errors
        health {
           lameduck 5s
        }
        ready
        kubernetes cluster.local in-addr.arpa ip6.arpa {
           pods insecure
           fallthrough in-addr.arpa ip6.arpa
           ttl 30
        }
        prometheus :9153
        forward . 172.16.232.1 {
           max_concurrent 1000
        }
        cache 30
        loop
        reload
        loadbalance
    }
kind: ConfigMap
metadata:
  creationTimestamp: "2021-03-18T15:58:07Z"
  name: coredns
  namespace: kube-system
  resourceVersion: "49996"
  uid: 428a03ff-82d0-4812-a3fa-e913c2911ebd

完成后,可能需要重启docker

sudo systemctl restart docker

更新:只需sudo systemctl restart docker

即可修复