首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CoreDNS由于循环失败:如何用适当的resolvConf给kubelet喂食?

CoreDNS由于循环失败:如何用适当的resolvConf给kubelet喂食?
EN

Server Fault用户
提问于 2021-10-27 10:57:14
回答 1查看 1.9K关注 0票数 3

这是调查开始的地方: CoreDNS无法工作超过几秒钟,从而产生以下错误:

代码语言:javascript
复制
$ kubectl get pods --all-namespaces
NAMESPACE       NAME                                          READY   STATUS             RESTARTS      AGE
ingress-nginx   ingress-nginx-controller-8xcl9                1/1     Running            0             11h
ingress-nginx   ingress-nginx-controller-hwhvk                1/1     Running            0             11h
ingress-nginx   ingress-nginx-controller-xqdqx                1/1     Running            2 (10h ago)   11h
kube-system     calico-kube-controllers-684bcfdc59-cr7hr      1/1     Running            0             11h
kube-system     calico-node-62p58                             1/1     Running            2 (10h ago)   11h
kube-system     calico-node-btvdh                             1/1     Running            0             11h
kube-system     calico-node-q5bkr                             1/1     Running            0             11h
kube-system     coredns-8474476ff8-dnt6b                      0/1     CrashLoopBackOff   1 (3s ago)    5s
kube-system     coredns-8474476ff8-ftcbx                      0/1     Error              1 (2s ago)    5s
kube-system     dns-autoscaler-5ffdc7f89d-4tshm               1/1     Running            2 (10h ago)   11h
kube-system     kube-apiserver-hyzio                          1/1     Running            4 (10h ago)   11h
kube-system     kube-controller-manager-hyzio                 1/1     Running            4 (10h ago)   11h
kube-system     kube-proxy-2d8ls                              1/1     Running            0             11h
kube-system     kube-proxy-c6c4l                              1/1     Running            4 (10h ago)   11h
kube-system     kube-proxy-nzqdd                              1/1     Running            0             11h
kube-system     kube-scheduler-hyzio                          1/1     Running            5 (10h ago)   11h
kube-system     kubernetes-dashboard-548847967d-66dwz         1/1     Running            0             11h
kube-system     kubernetes-metrics-scraper-6d49f96c97-r6dz2   1/1     Running            0             11h
kube-system     nginx-proxy-dyzio                             1/1     Running            0             11h
kube-system     nginx-proxy-zyzio                             1/1     Running            0             11h
kube-system     nodelocaldns-g9wxh                            1/1     Running            0             11h
kube-system     nodelocaldns-j2qc9                            1/1     Running            4 (10h ago)   11h
kube-system     nodelocaldns-vk84j                            1/1     Running            0             11h
kube-system     registry-j5prk                                1/1     Running            0             11h
kube-system     registry-proxy-5wbhq                          1/1     Running            0             11h
kube-system     registry-proxy-77lqd                          1/1     Running            0             11h
kube-system     registry-proxy-s45p4                          1/1     Running            2 (10h ago)   11h

那个吊舱上的kubectl describe并没有给照片带来太多东西:

代码语言:javascript
复制
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  67s                default-scheduler  Successfully assigned kube-system/coredns-8474476ff8-dnt6b to zyzio
  Normal   Pulled     25s (x4 over 68s)  kubelet            Container image "k8s.gcr.io/coredns/coredns:v1.8.0" already present on machine
  Normal   Created    25s (x4 over 68s)  kubelet            Created container coredns
  Normal   Started    25s (x4 over 68s)  kubelet            Started container coredns
  Warning  BackOff    6s (x11 over 66s)  kubelet            Back-off restarting failed container

但是查看日志确实做到了:

代码语言:javascript
复制
$ kubectl logs coredns-8474476ff8-dnt6b -n kube-system
.:53
[INFO] plugin/reload: Running configuration MD5 = 5b233a0166923d642fdbca0794b712ab
CoreDNS-1.8.0
linux/amd64, go1.15.3, 054c9ae
[FATAL] plugin/loop: Loop (127.0.0.1:49048 -> :53) detected for zone ".", see https://coredns.io/plugins/loop#troubleshooting. Query: "HINFO 2906344495550081187.9117452939332601176."

链接到故障排除文档是很好的!我开始浏览那个页面,发现我的/etc/resolv.conf确实包含有问题的本地IP nameserver 127.0.0.53

此外,我在/run/systemd/resolve/resolv.conf中找到了真正的DNS is,但现在的问题是:如何执行故障排除文档中描述的操作,并说:

将以下内容添加到您的kubelet配置yaml中: resolvConf:(或通过命令行标志您的“真实”resolv.conf包含您的上游服务器的实际is,并且没有本地/回送地址。此标志告诉kubelet将备用resolv.conf传递给Pods。对于使用systemd解析的系统,/run/systemd/ can通常是“真正”resolv.conf的位置,尽管这可能因您的发行版不同而有所不同。

因此,问题是:

  • 如何找到或在何处创建提到的kubelet配置yaml,
  • 应该在哪个级别指定resolvConf值,以及
  • 它能接受多个值吗?我定义了两个名称服务器。它们是作为单独的条目还是一个数组来给出?
EN

回答 1

Server Fault用户

回答已采纳

发布于 2021-10-27 13:45:38

/etc/resolv.conf/位于每个节点中。您可以通过SSH将其编辑到节点中。然后,您必须重新启动kubelet以使更改生效。

代码语言:javascript
复制
sudo systemctl restart kubelet

(如果不起作用,请使用sudo reboot__重新启动节点)

/home/kubernetes/kubelet-config.yaml (也位于每个节点上)文件包含kubelet的配置。您可以创建新的resolv.conf文件,并使用resolvConf字段指向它。

代码语言:javascript
复制
apiVersion: kubelet.config.k8s.io/v1beta1
...
kind: KubeletConfiguration
...
resolvConf: 

重要的:新配置只应用于更新后创建的荚。强烈建议在更改配置之前耗尽节点。

它能接受多个值吗?我定义了两个名称服务器。它们是作为单独的条目还是一个数组来给出?

Kubelet组态文档声明resolvConf是string类型,因此可能只接受单个值。

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1081862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档