国内不能下载image, 报错信息如下,
[root@hz-shtop-1 ~]# docker pull hub.c.163.com/kubesphere/kindest-node:v1.35.0
Error response from daemon: failed to resolve reference "hub.c.163.com/kubesphere/kindest-node:v1.35.0": failed to do request: Head "https://hub.c.163.com/v2/kubesphere/kindest-node/manifests/v1.35.0": dial tcp 106.2.45.245:443: i/o timeout
遇到的是拉取网易云 kindest-node:v1.35.0 镜像时网络超时 (i/o timeout),核心原因是服务器到网易云镜像仓库的网络链路不通(可能是防火墙/代理限制、网络带宽不足,或 v1.35.0 版本在该镜像源未同步)。我会给你「降级版本+离线加载」的终极解决方案,彻底绕开网络问题。
一、核心错误分析
dial tcp 106.2.45.245:443: i/o timeout
- 服务器能解析
hub.c.163.com的 IP(106.2.45.245),但无法建立 TCP 连接(443端口),属于网络层不通; - v1.35.0 是较新版本,网易云镜像源可能未同步该版本,进一步加剧拉取失败。
二、终极解决方案:离线加载镜像(完全绕开网络)
步骤1:在能上网的机器(本地/其他服务器)下载镜像
找一台有外网的机器(比如你的本地电脑),执行以下命令下载稳定版本的 kindest-node 镜像:
bash
# 推荐下载 v1.28.0(国内镜像源覆盖最全、最稳定)
docker pull hub.c.163.com/kubesphere/kindest-node:v1.28.0
# 将镜像保存为 tar 包(方便拷贝到目标服务器)
docker save hub.c.163.com/kubesphere/kindest-node:v1.28.0 > kind-node-v1.28.0.tar
# 可选:若需要 v1.30.0,也可下载(成功率高于 v1.35.0)
# docker pull hub.c.163.com/kubesphere/kindest-node:v1.30.0
# docker save hub.c.163.com/kubesphere/kindest-node:v1.30.0 > kind-node-v1.30.0.tar
步骤2:将 tar 包拷贝到目标服务器(hz-shtop-1)
用 scp 命令拷贝(替换「本地路径」和「服务器IP」):
bash
# 本地执行:拷贝 tar 包到目标服务器的 /root 目录
scp /本地路径/kind-node-v1.28.0.tar root@hz-shtop-1:/root/
步骤3:在目标服务器加载镜像并打标签
登录 hz-shtop-1 服务器,执行以下命令:
bash
# 1. 加载镜像到 Docker 本地仓库
docker load < /root/kind-node-v1.28.0.tar
# 2. 给镜像打标签(匹配 Kind 期望的默认名称,避免路径问题)
docker tag hub.c.163.com/kubesphere/kindest-node:v1.28.0 kindest/node:v1.28.0
# 验证镜像是否加载成功(能看到 kindest/node:v1.28.0 即为成功)
docker images | grep kindest-node
步骤4:基于本地镜像创建 Kind 集群
跳过网络拉取,直接使用本地镜像创建集群:
bash
# 1. 删除之前失败的集群残留
kind delete cluster --name kind
# 2. 创建集群(指定本地镜像,跳过预检查)
kind create cluster \
--image kindest/node:v1.28.0 \
--name kind \
--skip-preflight-checks # 跳过镜像拉取检查,强制用本地镜像
三、验证集群创建成功
执行以下命令确认状态:
bash
# 1. 查看 Kind 集群列表
kind get clusters
# 输出 "kind" 表示集群创建成功
# 2. 查看节点状态(Status 为 Ready 即为正常)
kubectl get nodes
# 预期输出:
NAME STATUS ROLES AGE VERSION
kind-control-plane Ready control-plane 20s v1.28.0
四、备选方案:检查服务器网络(若能调整网络策略)
如果你的服务器允许调整网络配置,可尝试以下操作解决超时问题:
-
临时关闭防火墙/SELinux (测试用,生产需谨慎):
bashsystemctl stop firewalld setenforce 0 -
配置 Docker 代理 (若服务器需通过代理上网):
编辑/etc/docker/daemon.json:json{ "proxies": { "default": { "httpProxy": "http://你的代理IP:端口", "httpsProxy": "http://你的代理IP:端口", "noProxy": "localhost,127.0.0.1,192.168.0.0/16" } } }重启 Docker:
bashsystemctl daemon-reload systemctl restart docker -
改用更低版本 (v1.27.0/v1.26.0):
这些版本在国内镜像源的同步率更高,拉取成功率也更高:bashdocker pull hub.c.163.com/kubesphere/kindest-node:v1.27.0
总结
- 核心问题:服务器到网易云镜像仓库的网络链路不通,且高版本镜像未同步;
- 终极方案:离线下载镜像→拷贝到服务器→加载镜像→创建集群,完全绕开网络限制;
- 关键版本:优先选 v1.28.0(稳定、镜像源覆盖全),避免 v1.35.0 这类高版本;
- 验证重点 :加载镜像后用
docker images确认标签正确,创建集群时加--skip-preflight-checks跳过校验。
如果执行 kind create cluster 后仍有报错,提供完整的错误输出,我会帮你进一步定位问题。