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

K8s集群无法从私有镜像仓库拉取pause等基础镜像的问题求助

核心问题原因

Pod配置中的imagePullSecrets仅对Pod内的业务容器生效,pause镜像是Kubernetes为Pod创建网络命名空间的沙箱基础镜像,由kubelet直接调用底层容器运行时拉取,不会读取对应Namespace下的Secret凭证,因此你配置的rul-regcred不会作用于pause镜像的拉取流程。

解决方案

提供两种常用可行方案,任选其一即可:

方案1:给容器运行时配置全局私有仓库凭证(推荐)

该方案适配所有场景,配置后节点上所有kubelet发起的镜像拉取操作都会自动使用对应凭证:

  • 若使用Docker作为容器运行时:
    你之前执行docker login是普通用户身份,生成的凭证存储在普通用户$HOME/.docker/config.json,而kubelet默认以root权限运行,只会读取/root/.docker/config.json路径的凭证。需要在所有集群节点(控制面+工作节点)切换到root用户后执行登录:
    sudo su -
    docker login <你的私有镜像仓库地址>
    # 按提示输入用户名密码即可
    
  • 若使用Containerd作为容器运行时:
    编辑所有节点的/etc/containerd/config.toml配置文件,添加私有仓库的认证配置:
    [plugins."io.containerd.grpc.v1.cri".registry.configs."<你的私有镜像仓库地址>".auth]
      username = "私有仓库用户名"
      password = "私有仓库密码"
    
    配置完成后重启containerd生效:
    systemctl daemon-reload
    systemctl restart containerd
    

方案2:预拉取pause镜像到所有节点

如果不想配置全局凭证,也可以在所有节点提前手动拉取pause镜像,kubelet会优先使用本地已存在的镜像,不会触发拉取操作:

# 所有节点执行,替换为你的私有仓库pause镜像地址
docker pull <my-private-registry>/pause:3.2
验证方法

配置完成后可在节点上使用容器运行时CLI直接拉取pause镜像验证是否生效:

  • Docker环境:docker pull <my-private-registry>/pause:3.2
  • Containerd环境:crictl pull <my-private-registry>/pause:3.2

若拉取无报错,即可重新部署应用,不会再出现凭证缺失的问题。

内容的提问来源于stack exchange,提问作者김진규

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:06:03