【问题标题】:coredns crashloopbackoff in kuberneteskubernetes 中的 coredns crashloopbackoff
【发布时间】:2019-06-25 06:07:19
【问题描述】:

我在ubuntu 16.04 中设置了kubernetes。我正在使用 kube 版本 1.13.1 并使用 weave 进行联网。我已经使用以下方法初始化了集群:

sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=192.168.88.142

编织:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

所有 pod 似乎都运行良好,但 coredns 始终保持在 CrashLoopBackOff 状态。我已经阅读了几乎所有可用的解决方案。

NAME                                READY   STATUS             RESTARTS   AGE
coredns-86c58d9df4-h5plc            0/1     CrashLoopBackOff   7          18m
coredns-86c58d9df4-l77rw            0/1     CrashLoopBackOff   7          18m
etcd-tx-g1-209                      1/1     Running            0          17m
kube-apiserver-tx-g1-209            1/1     Running            0          17m
kube-controller-manager-tx-g1-209   1/1     Running            0          17m
kube-proxy-2jdpp                    1/1     Running            0          18m
kube-scheduler-tx-g1-209            1/1     Running            0          17m
weave-net-npgnc                     2/2     Running            0          13m

我最初是从编辑 cordens 文件并删除循环开始的。它解决了这个问题,但后来我意识到我无法从容器内 ping www.google.com,但我能够 ping google.com 的 IP 地址。因此删除循环并不是一个完美的解决方案。

接下来我尝试查看/etc/resolv.conf,发现以下内容:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search APSDC.local

这里是 kubernetes 页面上提供的workaround,它表示应避免使用任何类型的 IP 地址,如 127.0.0.1。我无法理解这一行,因为该文件是自动生成的。如何对文件进行更改,以便 coredns 可以正常工作。 Belo 是 coredns 的日志:

$ kubectl logs coredns-86c58d9df4-h5plc -n kube-system

.:53
2019-01-31T17:26:43.665Z [INFO] CoreDNS-1.2.6
2019-01-31T17:26:43.666Z [INFO] linux/amd64, go1.11.2, 756749c
CoreDNS-1.2.6
linux/amd64, go1.11.2, 756749c
[INFO] plugin/reload: Running configuration MD5 = f65c4821c8a9b7b5eb30fa4fbc167769
[FATAL] plugin/loop: Forwarding loop detected in "." zone. Exiting. See https://coredns.io/plugins/loop#troubleshooting. Probe query: "HINFO 1423429973721138313.4523734933111484351.".

任何人都可以为我指出正确的方向以解决此问题。请帮忙。谢谢

【问题讨论】:

    标签: kubernetes dns


    【解决方案1】:

    我已经解决了这个问题。在我的情况下,我有以下 /etc/resolv.conf

    的内容
    nameserver     127.0.1.1
    

    我首先使用下面的命令来获取正确的 IP,因为设备在客户端的网络中。

    nmcli device show <interfacename> | grep IP4.DNS
    

    在此之后,我用以下内容更新了文件 /etc/resolvconf/resolv.conf.d/head

    nameserver    192.168.66.21
    

    然后运行以下命令重新生成resolv.conf

    sudo resolvconf -u
    

    在此之后,我在/etc/resolv.conf 中有以下内容:

    nameserver    192.168.66.21
    nameserver    127.0.1.1
    

    然后我删除了coredns pod,一切正常。谢谢。

    【讨论】:

    • 这个解决方案应该是最好的,但它对我不起作用。我更改了configmap/coredns,直接指向我的上游解析器。看到这个blog.heptio.com/…
    • 您是如何更新失败 pod 中的 resolvconf 文件的?我最终编辑了 configmap,将 /etc/resolv.conf 替换为 8.8.8.8(反正到目前为止它是一个沙箱)。
    【解决方案2】:

    我在ubuntu 16.04 中遇到了同样的问题。我的/etc/resolv.conf 也指向了环回地址。我第一次尝试以 S Andrew 的身份手动更改 resolv.conf 文件,但没有任何运气。

    就我而言,我已经解决了禁用dnsmasq的问题。 在/etc/NetworkManager/NetworkManager.conf 中,在 [main] 部分中对以下行进行注释:

    [main]
    #dns=dnsmasq
    

    Dnsmasq 可以很容易地指定用于给定域的名称服务器,但会自动设置环回地址,这会使coredns 崩溃。

    在此之后,/etc/resolv.conf 文件指向我的 ISP 提供的 DNS 服务器。

    【讨论】:

      猜你喜欢
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-28
      • 1970-01-01
      • 2022-08-08
      • 2019-04-04
      • 2018-09-02
      相关资源
      最近更新 更多