k8s 国内无法下载docker images的分析

国内不能下载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

四、备选方案:检查服务器网络(若能调整网络策略)

如果你的服务器允许调整网络配置,可尝试以下操作解决超时问题:

  1. 临时关闭防火墙/SELinux (测试用,生产需谨慎):

    bash 复制代码
    systemctl stop firewalld
    setenforce 0
  2. 配置 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:

    bash 复制代码
    systemctl daemon-reload
    systemctl restart docker
  3. 改用更低版本 (v1.27.0/v1.26.0):
    这些版本在国内镜像源的同步率更高,拉取成功率也更高:

    bash 复制代码
    docker pull hub.c.163.com/kubesphere/kindest-node:v1.27.0

总结

  1. 核心问题:服务器到网易云镜像仓库的网络链路不通,且高版本镜像未同步;
  2. 终极方案:离线下载镜像→拷贝到服务器→加载镜像→创建集群,完全绕开网络限制;
  3. 关键版本:优先选 v1.28.0(稳定、镜像源覆盖全),避免 v1.35.0 这类高版本;
  4. 验证重点 :加载镜像后用 docker images 确认标签正确,创建集群时加 --skip-preflight-checks 跳过校验。

如果执行 kind create cluster 后仍有报错,提供完整的错误输出,我会帮你进一步定位问题。

相关推荐
70asunflower3 小时前
用Docker创建不同的容器类型
运维·docker·容器
小Pawn爷4 小时前
3.Dockerfile
docker
CodeGolang4 小时前
Docker容器化部署Zabbix监控系统完整指南
docker·容器·zabbix
忆~遂愿5 小时前
Runtime 上下文管理:计算实例的生命周期、延迟最小化与上下文切换优化
java·大数据·开发语言·人工智能·docker
lpruoyu15 小时前
【Docker进阶-03】存储原理
docker·容器
文静小土豆16 小时前
Docker 与 containerd 代理配置详解:镜像拉取速度慢的终极解决方案
运维·docker·容器
JY.yuyu17 小时前
Docker常用命令——数据卷管理 / 端口映射 / 容器互联
运维·docker·容器
lpruoyu18 小时前
【Docker进阶-06】docker-compose & docker swarm
运维·docker·容器
虾说羊19 小时前
docker容器化部署项目流程
运维·docker·容器
骇客野人20 小时前
通过脚本推送Docker镜像
java·docker·容器