引自免费微信小程序:皆我百晓生
看起来你在尝试使用 kubeadm init 初始化一个 Kubernetes 集群时遇到了问题。错误信息表明在拉取 coredns 镜像时出现了网络问题。具体错误是连接超时(net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers))。这可能是由于网络连接不稳定、防火墙设置限制或是 Docker 拉取镜像的速度较慢。
首先,确保你的机器可以访问互联网,并且没有被防火墙阻止。你可以尝试手动从 Docker 中拉取 k8s.gcr.io/coredns:1.6.5 这个镜像,看是否能成功:
docker pull k8s.gcr.io/coredns:1.6.5
如果手动拉取也失败,可能是由于国内访问 Google 镜像仓库速度较慢或者受限。在这种情况下,你可以考虑使用国内的镜像加速服务,比如阿里云的 DaRocin 镜像加速器。首先,你需要安装并配置 DaRocin,然后再次运行 kubeadm init。
以下是安装 DaRocin 的步骤:
-
安装 DaRocin 插件:
curl -fsSL https://get.daocloud.io/docker-ce/linux/daocloud/etc/apt/keyring.gpg | sudo apt-key add - echo "deb [signed-by=/etc/apt/keyring.gpg] https://get.daocloud.io/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null -
更新包列表并安装 Docker CE:
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io -
配置 DaRocin 作为默认的 Docker 镜像加速器: 编辑
/etc/docker/daemon.json文件(如果没有此文件,创建它):{ "registry-mirrors": ["https://index.docker.io/v1/"] }将
"https://index.docker.io/v1/"替换为 DaRocin 的加速地址,例如:{ "registry-mirrors": ["http://hub-mirror.c.163.com"] } -
重启 Docker 服务以应用新的配置:
sudo systemctl restart docker
完成上述步骤后,再次尝试执行 kubeadm init 命令,应该就可以正常进行。如果你之前已经设置了国内的 Kubernetes 镜像源,那么DaRocin会自动加速这些镜像的下载。
kubeadm init --kubernetes-version=v1.17.4 --pod-network-cidr=10.244.0.0/16 --service-cidr=10.96.0.0/12 --apiserver-advertise-address=192.168.10.151
这样应该就能解决镜像拉取的问题。如果还有其他问题,可以尝试增加日志级别 -v=5 或更高,以便获取更详细的错误信息。
