kubernetes 如何执行kubelet --resolve-conf?

hc8w905p  于 2022-11-28  发布在  Kubernetes
关注(0)|答案(3)|浏览(306)

我遇到了一个问题,coredns似乎不能在我的ubuntu示例上工作,我从日志中得到了以下错误:

2020-07-16T05:28:36.648Z [INFO] 172.17.0.8:60594 - 29368 "AAAA IN redis-master.cluster.local. udp 44 false 512" NXDOMAIN qr,rd 137 0.000053955s
2020-07-16T05:28:36.650Z [INFO] 172.17.0.8:43585 - 56935 "AAAA IN redis-master. udp 30 false 512" NXDOMAIN qr,rd,ra 30 0.001305981s
2020-07-16T05:28:36.650Z [INFO] 172.17.0.8:43585 - 55951 "A IN redis-master. udp 30 false 512" NXDOMAIN qr,rd,ra 30 0.001790145s
2020-07-16T05:28:36.803Z [INFO] 172.17.0.11:60313 - 14198 "A IN redis-master.cluster.local. udp 44 false 512" NXDOMAIN qr,rd 137 0.000083909s
2020-07-16T05:28:36.803Z [INFO] 172.17.0.11:60313 - 14670 "AAAA IN redis-master.cluster.local. udp 44 false 512" NXDOMAIN qr,rd 137 0.000078636s
2020-07-16T05:28:36.808Z [INFO] 172.17.0.11:42385 - 5737 "A IN redis-master.svc.cluster.local. udp 48 false 512" NXDOMAIN qr,rd 141 0.000095061s
2020-07-16T05:28:36.808Z [INFO] 172.17.0.11:42385 - 6139 "AAAA IN redis-master.svc.cluster.local. udp 48 false 512" NXDOMAIN qr,rd 141 0.000088591s
2020-07-16T05:28:36.809Z [INFO] 172.17.0.11:47547 - 18338 "A IN redis-master.cluster.local. udp 44 false 512" NXDOMAIN qr,rd 137 0.000077331s

我希望从文档中找到的以下段落here是解决方案:
一些Linux发行版(例如Ubuntu)默认使用本地DNS解析器(systemd-resolved). Systemd-resolved移动/etc/resolv.conf并将其替换为一个存根文件,该存根文件在解析上游服务器中的名称时会导致致命的转发循环。这可以通过使用kubelet的--resolv-conf标志来手动修复,以指向正确的resolv.conf(对于systemd-resolved,这是/run/systemd/resolve/resolv.conf). kubeadm会自动检测systemd-resolved,并相应地调整kubelet标志.
然而,我对如何执行对Kubelet的调用缺乏了解。我可以使用一个解释或代码示例来说明它应该如何完成。
我不确定它是否相关,但我正在使用minikube来测试我的集群。
提前感谢您的帮助,干杯!

ckocjqey

ckocjqey1#

听起来像是minikube中systemd-resolved和coredns的冲突。您可以尝试禁用systemd-resolved,因为您没有使用kubeadm创建集群:

  • 禁用系统解析💣
sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved
  • 把下面这行代码放到/etc/NetworkManager/NetworkManager.conf[main]部分:
dns=default
  • 删除符号链接/etc/resolv.conf💣
sudo rm /etc/resolv.conf
  • 重启网络管理器♀🏃‍️🏃‍ ♀️🏃‍ ♀️🏃🏃🏃
sudo systemctl restart NetworkManager
zvms9eto

zvms9eto2#

我今天遇到了这个问题,这是我发现的-我仍在验证这个答案。
https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/
为每个运行kubelet的主机创建以下文件。
/etc/系统/系统/文件系统/文件系统/文件系统/文件系统

[Service]
MountFlags=shared
Environment="DOCKER_OPTS=--resolv-conf=/run/systemd/resolve/resolv.conf"
zujrkrfu

zujrkrfu3#

虽然最初的问题是关于minikube集群的,但这里有几种使用kubeadm创建集群的方法。
第一个方法,使用写入旗标时已过时的--resolv-conf
Source of information https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/kubelet-integration/#the-kubelet-drop-in-file-for-systemd

  • sudo使用以下内容创建文件/etc/default/kubelet

KUBELET_EXTRA_ARGS=--resolv-conf=path_to_your_resolv.conf

  • 重新启动kubelet服务sudo systemctl restart kubelet
  • 重新创建CoreDNS pod(重新启动部署或删除现有pod)

第二个使用KubeletConfiguration对象
Source https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-reconfigure/#updating-the-kubeletconfiguration

  • 编辑集群kubectl edit cm -n kube-system kubelet-config中存储的kubelet配置,查找resolvConf: ***
  • 然后将其从群集下载到节点kubeadm upgrade node phase kubelet-config上的本地配置
  • 重新启动kubelet服务sudo systemctl restart kubelet
  • 重新创建CoreDNS pod(重新启动部署或删除现有pod)

相关问题