ArgoCD 镜像拉取卡住?DaoCloud 镜像加速 3 级配置完整实战
2026/9/11 17:26:52 网站建设 项目流程

ArgoCD 镜像拉取卡住?DaoCloud 镜像加速 3 级配置完整实战

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

ArgoCD 镜像拉取卡在 gcr.io 等境外仓库、Pod 反复 ImagePullBackOff 时,DaoCloud 镜像加速(public-image-mirror)可以接管拉取链路:镜像地址加一个前缀,或替换首段域名,无需改动集群配置。

它凭什么能加速:原理三句话

  • public-image-mirror 仅是源 Registry 的 Mirror,所有层哈希(sha256)与源保持一致,采用懒加载机制。
  • 支持范围由白名单(allows.txt)决定,新增镜像不需要改代码,每天检查一次同步情况。
  • 缓存内容保留 30 天,manifest 内存缓存 1 小时、blob 内存缓存 1 分钟,过期后需重新同步。

最小改动接入方式:加 m.daocloud.io 前缀

认知成本最低的用法:原始地址原样保留,前面加m.daocloud.io/。该方式不依赖域名替换表,是建议的第一步。

docker.io/library/busybox ↓ m.daocloud.io/docker.io/library/busybox
docker run -d -P m.daocloud.io/docker.io/library/nginx

前缀替换查表:只改首段域名的替代写法

常用仓库也可以只替换首段域名,写法更短,适合直接固化到各客户端的镜像源配置里:

源站替换为备注
docker.elastic.coelastic.m.daocloud.io
docker.iodocker.m.daocloud.io
dhi.iodhi.m.daocloud.io
gcr.iogcr.m.daocloud.io
ghcr.ioghcr.m.daocloud.io
k8s.gcr.iok8s-gcr.m.daocloud.iok8s.gcr.io 已被迁移到 registry.k8s.io
registry.k8s.iok8s.m.daocloud.io
mcr.microsoft.commcr.m.daocloud.io
nvcr.ionvcr.m.daocloud.io
quay.ioquay.m.daocloud.io
registry.ollama.aiollama.m.daocloud.io实验内测中

两点事实说明:前缀替换规则是人工维护的,官方推荐使用加前缀方式;各源站内容不同,不要把 docker.io 之外的站点配进 Docker 的registry-mirrors

分级实操:从个人到企业内网的三条路径

第一级 · 个人开发者:改 ArgoCD 应用的 image 字段(⭐ 个人推荐)

适用谁:1~2 人使用、Application 数量少。怎么操作:注意要改的不是 Application 本身,而是代码仓库里 workload 清单的image字段——ArgoCD 同步的是清单,镜像地址由清单决定。

apiVersion: argoproj.io/v1alpha1 kind: Application metadata: name: hello-app spec: source: repoURL: <你的代码仓库地址> targetRevision: main destination: server: https://kubernetes.default.svc namespace: default

仓库中 workload 的镜像写法(以 gcr 镜像为例,前缀替换写法同理,如k8s.m.daocloud.io/pause:3.9):

containers: - name: app image: m.daocloud.io/gcr.io/cadvisor/cadvisor:v0.44.0

拿到什么:拉取走 DaoCloud 缓存链路,集群零改动;代价是每次换镜像都要手工改清单。

第二级 · 团队规范化:repimage Webhook 自动改写镜像(⭐ 团队推荐)

适用谁:多人协作、镜像变更频繁、难以要求每个人都记得改清单。怎么操作:部署一个 admission Webhook,新建 Pod 时把 image 自动改写为m.daocloud.io前缀,yaml 与 Helm 仓库均不动:

kubectl create -f https://files.m.daocloud.io/github.com/wzshiming/repimage/releases/download/latest/repimage.yaml kubectl rollout status deployment/repimage -n kube-system

拿到什么:集群级统一收口,仓库清单保留原始地址,不存在改漏、分支不一致的问题;代价是多了一个 admission 组件,其可用性需要纳入运维管理。

第三级 · 企业内网:registry 代理缓存搭建(⭐ 企业推荐)

适用谁:多节点集群、出口带宽受限,希望把对外网依赖收敛到单点。怎么操作:内网部署一个本地 registry,以 proxy 模式指向m.daocloud.io(完整文档见 docs/local-cache/):

services: registry: image: m.daocloud.io/docker.io/library/registry:3 restart: unless-stopped ports: - 8888:8888 command: - /etc/docker/registry/config.yml volumes: - cache-data:/var/lib/registry configs: - source: registry-config target: /etc/docker/registry/config.yml configs: registry-config: content: | version: 0.1 storage: delete: enabled: true filesystem: rootdirectory: /var/lib/registry http: addr: :8888 proxy: remoteurl: https://m.daocloud.io ttl: 2160h volumes: cache-data: {}

关键配置说明:proxy段让本地 registry 成为缓存代理,未命中回源、命中直接本地应答;ttl: 2160h(90 天)决定缓存失效周期。

docker compose up -d

Docker 客户端/etc/docker/daemon.json

{ "insecure-registries": ["<your-registry-ip>:<your-registry-port>"] }

insecure-registries的原因:内网 registry 默认走 HTTP,而 Docker 守护进程只信任 HTTPS registry,必须显式声明例外。改完执行systemctl restart docker

拿到什么:节点只需把首段换成内网地址,命中后不再出外网:

docker pull <your-registry-ip>:<your-registry-port>/docker.io/library/nginx:latest

排障指南:三个高频现象与处理

  • 现象:白天拉取仍然缓慢、超时。原因:加速服务高峰期拥挤。处理:非紧急的拉取任务安排在闲时(北京时间 01:00–07:00)执行,定时任务同理错峰。
  • 现象:同一镜像地址时好时坏,或内容悄悄变化。原因:缓存 30 天过期需重新同步,且latest这类可变 tag 在上游变更后 1 小时(manifest 缓存周期)才会更新。处理:优先用@sha256:摘要锁定镜像,其次明确版本号的 tag,最后才考虑latest
  • 现象:某个镜像始终拉不到,怀疑没同步。原因:白名单未覆盖,或同步记录已过期(队列仅保留 1 小时)。处理:到同步队列与服务状态监控确认;未覆盖的镜像可改用完整前缀方式或替换同类镜像。

适用范围

本方案覆盖白名单内的公开镜像(docker.io、gcr.io、quay.io、mcr.microsoft.com 等),适用于国内网络环境的 ArgoCD/Kubernetes 部署;私有镜像与完全离线场景需自行同步。完整白名单与限流规则以 DaoCloud 官方项目 public-image-mirror 仓库 README 的公开信息为准。

【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢,需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询