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

K8s集群kubelet无法拉取Nexus私有镜像问题求助

问题解决方法

你的问题核心是kubelet默认使用HTTPS协议访问镜像仓库,但你的Nexus仅提供HTTP服务,导致协议不匹配报错。以下是几种可行的解决方式:

方式一:配置容器运行时允许HTTP访问该Nexus仓库

针对containerd(K8s默认容器运行时)

  1. 在每个集群节点(master+worker)上编辑containerd配置文件:/etc/containerd/config.toml
  2. 添加或修改镜像仓库的 insecure 配置(替换NEXUS_URL:NEXUS_PORT为实际地址):
[plugins."io.containerd.grpc.v1.cri".registry]
  [plugins."io.containerd.grpc.v1.cri".registry.mirrors]
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."NEXUS_URL:NEXUS_PORT"]
      endpoint = ["http://NEXUS_URL:NEXUS_PORT"]
  [plugins."io.containerd.grpc.v1.cri".registry.configs]
    [plugins."io.containerd.grpc.v1.cri".registry.configs."NEXUS_URL:NEXUS_PORT".tls]
      insecure_skip_verify = true
  1. 重启containerd服务:
systemctl restart containerd

针对Docker(若集群使用Docker作为容器运行时)

  1. 在每个集群节点上编辑Docker daemon配置:/etc/docker/daemon.json
  2. 添加insecure-registries字段(替换实际地址):
{
  "insecure-registries": ["NEXUS_URL:NEXUS_PORT"]
}
  1. 重启Docker服务:
systemctl restart docker

方式二:为Nexus配置HTTPS(生产环境推荐)

这是更规范的长期解决方案,避免HTTP带来的安全风险:

  • 生成SSL证书(可使用自签证书,或从可信CA机构申请)
  • 在Nexus管理界面中启用HTTPS服务,指定证书和密钥文件路径
  • 若使用自签证书,需将证书添加到所有集群节点的系统信任证书库中(比如Ubuntu系统可将证书复制到/usr/local/share/ca-certificates/后执行update-ca-certificates)

验证步骤

配置完成后,先在任意节点手动测试镜像拉取:

# containerd环境用crictl命令
crictl pull NEXUS_URL:NEXUS_PORT/image_name:tagname
# Docker环境用docker命令
docker pull NEXUS_URL:NEXUS_PORT/image_name:tagname

确认拉取成功后,重新创建Deployment即可。

内容的提问来源于stack exchange,提问作者RedThor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:21