当前位置: 首页 > article >正文

k8s-coredns-CrashLoopBackOff 工作不正常

img

本文作者: slience_me


问题描述

# 问题描述
# root@k8s-node1:/home/slienceme# kubectl get pods --all-namespaces
# NAMESPACE      NAME                                READY   STATUS             RESTARTS   AGE
# kube-flannel   kube-flannel-ds-66bcs               1/1     Running            0          12h
# kube-flannel   kube-flannel-ds-ntwwx               1/1     Running            0          12h
# kube-flannel   kube-flannel-ds-vb6n9               1/1     Running            5          12h
# kube-system    coredns-7f9c544f75-67njd            0/1     CrashLoopBackOff   17         12h   // [!code focus:8]
# kube-system    coredns-7f9c544f75-z82nl            0/1     CrashLoopBackOff   17         12h
# kube-system    etcd-k8s-node1                      1/1     Running            4          12h
# kube-system    kube-apiserver-k8s-node1            1/1     Running            4          12h
# kube-system    kube-controller-manager-k8s-node1   1/1     Running            3          12h
# kube-system    kube-proxy-fs2p6                    1/1     Running            0          12h
# kube-system    kube-proxy-x7rkp                    1/1     Running            0          12h
# kube-system    kube-proxy-xpbvt                    1/1     Running            3          12h
# kube-system    kube-scheduler-k8s-node1            1/1     Running            3          12h
# kube-system    tiller-deploy-6ffcfbc8df-mzwd7      1/1     Running            0          39m

原因分析:

在 CoreDNS 的配置文件 (Corefile) 中,forward 插件不应该指向 CoreDNS 本身,否则会导致 DNS 请求循环。如果 forward 指向 CoreDNS,它会不断地将请求转发回自己,造成无限循环。

通过对问题的追踪,在github issue找到 CoreDNS pod goes to CrashLoopBackOff State

解决方案:

你需要修改 Kubernetes 中的 CoreDNS 配置,具体操作步骤如下:

步骤 1: 修改 CoreDNS 配置ConfigMap

kubectl edit configmap coredns -n kube-system

步骤 2: 修改 Corefile 配置

修改 Corefile 中的 forward 配置,当前配置为:

forward . /etc/resolv.conf

你需要将其修改为指向外部 DNS 服务器,比如 Google 的公共 DNS 服务器 8.8.8.81.1.1.1(Cloudflare DNS)。例如,你可以修改为:

forward . 8.8.8.8

或者如果你希望使用多个 DNS 服务器,可以配置多个地址:

forward . 8.8.8.8 8.8.4.4

步骤 3: 保存并退出

步骤 4: 验证配置生效

验证 CoreDNS 配置是否生效,可以查看 CoreDNS Pod 是否正常运行,并且配置是否正确生效。

kubectl get pods -n kube-system -l k8s-app=kube-dns

如果需要,也可以重启 CoreDNS Pods,以确保新的配置生效:

kubectl rollout restart deployment coredns -n kube-system

通过这些步骤,你就能避免 CoreDNS 发生循环请求,确保 DNS 请求被转发到外部的 DNS 服务器,而不是 CoreDNS 本身。


http://www.kler.cn/a/591353.html

相关文章:

  • 《星际通信协议中的密码战争:一场跨越光年的攻防博弈》
  • CentOS下安装ElasticSearch(日志分析)
  • 82.RadioButton的选中处理逻辑 C#例子 WPF例子
  • 漏洞知识点《.htaccess 解析漏洞深度解析》
  • SpringBoot之如何集成SpringDoc最详细文档
  • Caffeine 缓存:简介、优势及应用场景
  • iwebsec-updatexml报错注入
  • 区块链 智能合约安全 | 整型溢出漏洞
  • 【2025】基于ssm+uniapp的图书馆座位预约小程序系统(源码、万字文档、图文修改、调试答疑)
  • 前端开发概论
  • Github 2025-03-17开源项目周报Top12
  • Statistical Learning 统计学习 :回归任务,线性回归,最小二乘法,标准误差,R方
  • Java面试黄金宝典2
  • 学习知识的心理和方法杂记-04
  • 强化学习(赵世钰版)-学习笔记(8.值函数方法)
  • MySQL--DDL
  • Python教学:lambda表达式的应用-由DeepSeek产生
  • 技术路线图ppt模板_流程图ppt图表_PPT架构图
  • 优选算法合集————双指针(专题四)
  • django如何配置使用asgi