docker image下载不成功的解决方案
问题根源
cr.kagent.dev是海外私有镜像仓库,国内网络直连超时/拉取失败,Kagent Chart 全局配置registry: cr.kagent.dev,所有组件镜像都走这个地址。
提供4套可落地方案,按简单到生产排序。
方案1:安装时直接覆盖镜像仓库(最快,无需改values)
Kagent 全局有global.registry参数,一键替换镜像域名,两种用法:
1.1 命令行 --set 覆盖(临时)
# 先装crdshelminstallkagent-crds oci://ghcr.io/kagent-dev/kagent/helm/kagent-crds-naiops --create-namespace\--setglobal.registry=dockerproxy.com/cr.kagent.dev# 再装主程序,带上你的valueshelminstallkagent oci://ghcr.io/kagent-dev/kagent/helm/kagent-naiops-fkagent-values.yaml\--setglobal.registry=dockerproxy.com/cr.kagent.dev代理规则:cr.kagent.dev/xxx→dockerproxy.com/cr.kagent.dev/xxx,公开免费镜像代理。
1.2 修改你的 kagent-values.yaml(永久推荐)
在 values 文件顶部加入全局镜像替换,所有组件自动生效:
global:registry:dockerproxy.com/cr.kagent.devtag:0.9.10然后正常执行安装:
helminstallkagent oci://ghcr.io/kagent-dev/kagent/helm/kagent-naiops-fkagent-values.yaml方案2:集群节点配置Docker全局镜像加速器(不修改helm)
所有节点统一加国内镜像源,节点自动代理海外仓库,无需改chart配置。
- 编辑
/etc/docker/daemon.json
{"registry-mirrors":["https://docker.mirrors.ustc.edu.cn","https://dockerproxy.com","https://docker.m.daocloud.io"]}- 重启docker
systemctl daemon-reload systemctl restartdocker缺点:仅能加速docker.io/gcr.io,对
cr.kagent.dev私有域名加速有限,优先用方案1。
方案3:本地预拉镜像+私有仓库 Harbor(生产稳定)
适合长期离线/严格内网集群:
- 本地能联网机器拉取代理镜像
dockerpull dockerproxy.com/cr.kagent.dev/kagent-dev/kagent/controller:0.9.10# 重命名为私有仓库地址dockertag dockerproxy.com/cr.kagent.dev/kagent-dev/kagent/controller:0.9.10 harbor.xxx.com/kagent-dev/kagent/controller:0.9.10# 推送到内网harbordockerpush harbor.xxx.com/kagent-dev/kagent/controller:0.9.10- helm安装指定内网仓库
helminstallkagent...--setglobal.registry=harbor.xxx.com方案4:DaoCloud 镜像代理备选(dockerproxy失效时用)
替换registry值为:
global:registry:m.daocloud.io/cr.kagent.dev命令行示例:
helminstallkagent...--setglobal.registry=m.daocloud.io/cr.kagent.dev关键补充:CRDS 也要同步替换 registry
kagent-crds chart 同样有global.registry,必须同步加参数,否则crds控制器镜像依然拉失败:
helminstallkagent-crds oci://ghcr.io/kagent-dev/kagent/helm/kagent-crds-naiops\--setglobal.registry=dockerproxy.com/cr.kagent.dev校验镜像是否替换成功
部署完成后查看pod镜像地址:
kubectl get pod-naiops-ojsonpath='{.items[0].spec.containers[0].image}'输出应不再是cr.kagent.dev/xxx,而是dockerproxy.com/cr.kagent.dev/xxx。
常见报错兜底
- 代理镜像拉取404:换
m.daocloud.io/cr.kagent.dev - 集群私有仓库需要认证:在values添加
global.imagePullSecrets
global:imagePullSecrets:-harbor-secret