1

我正在使用 WSL2 设置上的种类部署来设置和气流 k8s 集群。当我执行标准helm install $RELEASE_NAME apache-airflow/airflow --namespace $NS时,它失败了。进一步调查显示集群工作节点无法连接到 registry-1.docker.io。

一个图像拉取的错误日志

Failed to pull image "redis:6-buster": rpc error: code = Unknown desc = failed to pull and unpack image "docker.io/library/redis:6-buster": failed to resolve reference "docker.io/library/redis:6-buster": failed to do request: Head "https://registry-1.docker.io/v2/library/redis/manifests/6-buster": dial tcp: lookup registry-1.docker.io on 172.19.0.1:53: no such host

我可以从此节点访问所有其他网站,例如 google.com、yahoo.com merriam-webster.com 等;甚至 docker.com 也可以。此问题非常特定于 registry-1.docker.io。

所有搜索和链接似乎都围绕一般的互联网连接问题。

当前解决方案: 如果我手动更改/etc/resolv.confkind 工作节点上的 IP 地址以指向/etc/resolv.confWSL2 Debian 主 IP 地址的 IP 地址,那么它可以工作。

但是,这是一个动态集群和节点,我不能每次都这样做。我目前正在寻找一种方法来使其成为集群配置的一部分。通过某种方式使其工作,只需说kind create cluster一个应该能够使用kubectlhelm默认情况下。

但是,我更感兴趣的是弄清楚为什么这个网络设置专门针对 registry-1.docker.io 失败。是否有一些配置可以避免将 DNS 更改为主机 IP 或谷歌 DNS?由于当前的网络配置似乎适用于互联网的其余部分。

我已经记录了所有步骤和调查细节,包括github repositroy上的一些网络配置细节。如果您需要任何进一步的信息来帮助解决问题,请告诉我。随着我的进步,我将继续更新 github 文档。

设置:

带有 WSL2 的 Windows 11,没有任何 Docker 桌面

WSL2 映像:Linux 上带有 docker 引擎的 Debian Bullseye (11)

码头工人版本:20.10.2

种类版本:0.11.1

实物图片:kindest/node:v1.20.7@sha256:cbeaf907fc78ac97ce7b625e4bf0de16e3ea725daf6b04f930bd14c 67c671ff9

4

1 回答 1

0

我不确定,如果这是一个答案。在花了 2 天的时间试图找到解决方案之后。我想更改节点映像版本。在Kind release page 上,它显示 1.21 作为 kind 版本 0.11.1 的最新图像。我在 1.21 甚至启动集群时都遇到了问题。1.20 遇到了这个奇怪的 DNS 映像。所以去了1.23。这一切都适用于这样的形象。

然而,令我惊讶的是,当我将集群配置改回 1.20 时,DNS 问题就消失了。所以,我没有因为图像切换而发生什么变化,但我无法再次重现该问题!也许它会帮助别人

于 2022-02-16T09:23:47.050 回答