You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

因公司网络限制无法拉取kubeadm所需镜像的问题求助

因公司网络限制无法拉取kubeadm所需镜像的问题求助

针对你遇到的公司网络限制导致无法拉取Kubernetes官方镜像的问题,这里有几个实用的解决方案,你可以根据公司的实际网络环境选择:


方案一:使用国内镜像源替代官方源

国内有很多Kubernetes官方镜像的代理源,比如阿里云、华为云等,你可以通过替换镜像前缀的方式拉取,再重新打标签为官方镜像名,这样kubeadm就能正常识别了。

  1. 先列出当前kubeadm需要的所有镜像:
    kubeadm config images list --cri-socket=unix:///var/run/cri-dockerd.sock
    
  2. 以阿里云镜像源为例,你可以写个简单的shell脚本批量处理拉取和打标签:
    # 定义镜像源前缀
    SOURCE_REGISTRY="registry.aliyuncs.com/google_containers"
    TARGET_REGISTRY="registry.k8s.io"
    # 获取需要的镜像列表
    IMAGES=$(kubeadm config images list --cri-socket=unix:///var/run/cri-dockerd.sock)
    # 循环处理每个镜像
    for IMAGE in $IMAGES; do
        IMAGE_NAME=$(echo $IMAGE | cut -d/ -f2-)
        docker pull $SOURCE_REGISTRY/$IMAGE_NAME
        docker tag $SOURCE_REGISTRY/$IMAGE_NAME $TARGET_REGISTRY/$IMAGE_NAME
        # 可选:删除国内源的镜像,节省磁盘空间
        docker rmi $SOURCE_REGISTRY/$IMAGE_NAME
    done
    
  3. 处理完成后,再执行原命令验证:
    kubeadm config images pull --cri-socket=unix:///var/run/cri-dockerd.sock
    

方案二:离线导入镜像包

如果公司网络完全无法访问外部镜像源,你可以在一台能正常联网的机器上提前下载镜像,导出为tar包后传到目标节点导入:

  1. 在外网机器拉取所需镜像:
    kubeadm config images pull --cri-socket=unix:///var/run/cri-dockerd.sock
    
  2. 将所有镜像导出为tar包:
    docker save $(kubeadm config images list --cri-socket=unix:///var/run/cri-dockerd.sock) -o k8s-v1.31.1-images.tar
    
  3. 通过scp或其他传输工具把tar包传到目标节点,然后导入镜像:
    docker load -i k8s-v1.31.1-images.tar
    

方案三:配置公司内部私有镜像仓库

如果公司有自己的私有镜像仓库(比如Harbor),可以先把Kubernetes官方镜像同步到内部仓库,再通过kubeadm指定内部仓库地址拉取:

  1. 联系公司运维团队,将所需的Kubernetes镜像同步到内部私有仓库。
  2. 使用--image-repository参数指定内部仓库地址拉取:
    kubeadm config images pull --cri-socket=unix:///var/run/cri-dockerd.sock --image-repository=你的公司私有仓库地址
    

另外,你提供的报错是403 Forbidden,也可以先问问公司运维,是否可以把registry.k8s.io加入网络白名单,这是最直接的解决方式。

备注:内容来源于stack exchange,提问作者Mah_Bar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 12:48:05