CrashLoopBackOff中的Kubernetes CoreDNS

Hak*_*n89 4 docker kubernetes centos7 coredns

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

我的设置:

CentOS Linux release 7.5.1804 (Core)
Docker Version: 18.06.1-ce
Kubernetes: v1.12.3
Run Code Online (Sandbox Code Playgroud)

由官方指南和本指南安装: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
Run Code Online (Sandbox Code Playgroud)

我的/etc/resolv.conf:

nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

还尝试了我的本地dns-resolver(router)

nameserver 10.10.10.1
Run Code Online (Sandbox Code Playgroud)

设置和初始化:

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
Run Code Online (Sandbox Code Playgroud)

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

proxy . /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

直接到

proxy . 10.10.10.1
Run Code Online (Sandbox Code Playgroud)

或代理。8.8.8.8

还试图:

kubectl -n kube-system get deployment coredns -o yaml |   sed 's/allowPrivilegeEscalation: false/allowPrivilegeEscalation: true/g' |   kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

仍然没有任何帮助。

日志错误:

plugin/loop: Seen "HINFO IN 7847735572277573283.2952120668710018229." more than twice, loop detected
Run Code Online (Sandbox Code Playgroud)

另一个线程-coredns Pod具有CrashLoopBackOff或Error状态根本没有帮助,因为我还没有找到那里描述的任何解决方案。没有任何帮助。

Nar*_*ddy 7

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

但是,您错过了8.8.4.4

须藤纳米等/resolv.conf

nameserver 8.8.8.8
nameserver 8.8.4.4
Run Code Online (Sandbox Code Playgroud)

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

sudo systemctl daemon-reload

sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

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

kubectl drain <node_name> --delete-local-data --force --ignore-daemonsets
kubectl delete node <node_name>
kubeadm reset
Run Code Online (Sandbox Code Playgroud)

设置新群集后

kubectl get pods --all-namespaces
Run Code Online (Sandbox Code Playgroud)

它应该给出低于预期的结果

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
Run Code Online (Sandbox Code Playgroud)

  • 嘿@Altieres de Matos甚至我也提到过相同的命令! (2认同)

Ric*_*ico 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
Run Code Online (Sandbox Code Playgroud)

然后(您可能必须创建一个 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
Run Code Online (Sandbox Code Playgroud)

另外,尝试从端口访问端口443

# telnet kubernetes.default.svc.cluster.local 443 # or
# curl kubernetes.default.svc.cluster.local:443
Run Code Online (Sandbox Code Playgroud)