解决kubernetes CoreDNS 无法运行

在我搭建的kubernetes 集群中 关于coredns的pod总是无法正常运行

什么是CoreDns

CoreDNS是k8s中,master节点和从节点及其pods之间通信的接口。
Kubernetes包括用于服务发现的DNS服务器Kube-DNS。 该DNS服务器利用SkyDNS的库来为Kubernetes pod和服务提供DNS请求。SkyDNS2的作者,Miek Gieben,创建了一个新的DNS服务器,CoreDNS,它采用更模块化,可扩展的框架构建。 Infoblox已经与Miek合作,将此DNS服务器作为Kube-DNS的替代品。

CoreDNS利用作为Web服务器Caddy的一部分而开发的服务器框架。该框架具有非常灵活,可扩展的模型,用于通过各种中间件组件传递请求。这些中间件组件根据请求提供不同的操作,例如记录,重定向,修改或维护。虽然它一开始作为Web服务器,但是Caddy并不是专门针对HTTP协议的,而是构建了一个基于CoreDNS的理想框架。

在这种灵活的模型中添加对Kubernetes的支持,相当于创建了一个Kubernetes中间件。该中间件使用Kubernetes API来满足针对特定Kubernetes pod或服务的DNS请求。而且由于Kube-DNS作为Kubernetes的另一项服务,kubelet和Kube-DNS之间没有紧密的绑定。您只需要将DNS服务的IP地址和域名传递给kubelet,而Kubernetes并不关心谁在实际处理该IP请求。
关于CoreDns的详细内容请点击


现在开始查看并解决问题

使用 kubectl get pods --all-namespace
查看所有的pod
执行结果
在这里插入图片描述
pod的状态为:CrashLoopBackOff

CrashLoopBackOff的含义是,Kubernetes试图启动该Pod,但是过程中出现错误,导致容器启动失败或者正在被删除。

在网上找了找 找到一个解决方法
具体步骤如下:

1.打开并编辑 coredns的configmap

kubectl edit cm coredns -n kube-system

2.删除 loop 保存并退出
在这里插入图片描述
删除掉那个 loop 并保存退出

3.重启 coredns pods:
记得两个 coredns pod 都要删掉 然后就会重新创建

  kubectl delete pod coredns-xxx-xxxx     -n kube-system

这是我执行的
在这里插入图片描述在这里插入图片描述
查看下 欧克 没问题了
在这里插入图片描述
参考:https://www.it-swarm.net/zh/docker/coredns%E6%97%A0%E6%B3%95%E5%9C%A8kubernetes%E9%9B%86%E7%BE%A4%E4%B8%AD%E8%BF%90%E8%A1%8C/806878349/

发布了26 篇原创文章 · 获赞 10 · 访问量 6508

猜你喜欢

转载自blog.csdn.net/qq_40806970/article/details/99845808