Kubernete Pod 无法解析 DNS 地址但可以访问它(例如 curl google.com 失败,但 curl ip 正常)

Kubernete Pod 无法解析 DNS 地址但可以访问它(例如 curl google.com 失败,但 curl ip 正常)

我刚刚起步,几周前就开始学习 kubernetes,我使用的是 microk8 的简单安装,并启用了附加组件 dns metallb,还有一个带有 alpine 和 curl pkg 的简单 pod 来进行一些测试。

一切正常,部署、节点、来自相同命名空间以及其他命名空间的 Pod 内的通信。但我无法使用 dns 名称在 Pod 内访问互联网。例如:

curl google.com -> curl: (7) Failed to connect to google.com port 80 after 14 ms: Couldn't connect to server

尽管

curl 142.250.184.78 -> OK

ping 命令也是如此,但奇怪的是,它解析了 127.0.0.1 中的 dns google.com:

ping google.com -> 64 bytes from 127.0.0.1: seq=0 ttl=64 time=0.030 ms

尽管

ping 142.250.184.78 -> 64 bytes from 142.250.184.78: seq=0 ttl=114 time=8.997 ms

我真的不知道该去哪里,我曾尝试在 calico 中查找 kubernetes,但我自己就是无法弄清楚,如能得到任何帮助我将不胜感激。

使用的设置:家庭网络内的专用机器,安装有 Ubuntu 22.04.1,开箱即用的 microk8s 安装,仅需 dns metallb 插件,安装了 curl pkg 的简单容器

答案1

最终是 DNS 的问题。Kubernetes 试图解析 /etc/resolv.conf 中的 DNS,它类似于“homenettelecom.com”,不知道为什么它不能让我离开网络。删除它后,一切都开始正常工作。还必须删除 /etc/resolv.conf 的符号链接,因为某些应用程序(我想也是 kubernetes)不断重新应用该配置。

相关内容