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

如何使用nerdctl将镜像推送至K8S集群中的私有Registry Pod

使用nerdctl推送镜像至K8S集群私有Registry的操作指南

环境确认

  • 3节点K8S集群(基于Kubespray搭建,containerd为容器运行时,无Docker二进制)
  • 私有Registry已部署在kube-system namespace,Pod IP为10.233.88.135(运行于node12节点)

1. 为本地镜像添加私有Registry标签

推送前需将本地应用镜像重新打标签,格式遵循[Registry地址]:[端口]/[镜像名]:[标签]。默认Registry端口为5000,执行命令:

# 替换为你的本地镜像名、标签以及Registry地址
nerdctl tag local-app:v1 10.233.88.135:5000/local-app:v1

2. 配置nerdctl信任HTTP私有Registry

Kubespray部署的Registry默认使用HTTP协议,nerdctl默认拒绝HTTP Registry的请求,需添加信任配置:

方式一:针对containerd全局配置(影响所有使用containerd的工具)

编辑/etc/containerd/config.toml,追加以下配置(若已有对应块则合并):

[plugins."io.containerd.grpc.v1.cri".registry.configs."10.233.88.135:5000".tls]
  insecure_skip_verify = true

修改后重启containerd:

systemctl restart containerd

方式二:仅针对nerdctl单独配置

在当前用户目录下创建~/.config/nerdctl/config.toml,添加:

[registry."10.233.88.135:5000"]
  insecure = true

3. 执行镜像推送命令

完成配置后,执行推送命令:

# 替换为你的镜像标签和Registry地址
nerdctl push 10.233.88.135:5000/local-app:v1

4. 验证推送结果

  • 拉取镜像验证:
nerdctl pull 10.233.88.135:5000/local-app:v1
  • 查看Registry内镜像列表:
curl http://10.233.88.135:5000/v2/_catalog

优化建议

Pod IP会随重启变化,建议使用Registry的ClusterIP(更稳定):

  1. 查询Registry Service的ClusterIP:
kubectl get svc -n kube-system | grep registry
  1. 将所有步骤中的10.233.88.135替换为查询到的ClusterIP即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 01:27:11