我知道这个问题被问了十遍,但没有任何帮助通过互联网搜索。
我的设置:
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根本没有帮助,因为我还没有找到那里描述的任何解决方案。没有任何帮助。
答案 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 问题链接,我做了以下事情
kubectl -n kube-system edit configmaps coredns -o yaml
forward . /etc/resolv.conf
和 forward . 172.16.232.1
(我暂时设置为 8.8.8.8)答案 4 :(得分:0)
我得到的错误是:
<块引用>连接:没有到主机的路由","time":"2021-03-19T14:42:05Z"} 崩溃回退
在 kubectl -n kube-system logs coredns-d9fdb9c9f-864rz
显示的日志中
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