我正在使用 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.conf
kind 工作节点上的 IP 地址以指向/etc/resolv.conf
WSL2 Debian 主 IP 地址的 IP 地址,那么它可以工作。
但是,这是一个动态集群和节点,我不能每次都这样做。我目前正在寻找一种方法来使其成为集群配置的一部分。通过某种方式使其工作,只需说kind create cluster
一个应该能够使用kubectl
或helm
默认情况下。
但是,我更感兴趣的是弄清楚为什么这个网络设置专门针对 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