ArgoCD 镜像拉取卡住?DaoCloud 镜像加速 3 级配置完整实战 ArgoCD 镜像拉取卡住DaoCloud 镜像加速 3 级配置完整实战【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirrorArgoCD 镜像拉取卡在 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/busyboxdocker run -d -P m.daocloud.io/docker.io/library/nginx前缀替换查表只改首段域名的替代写法常用仓库也可以只替换首段域名写法更短适合直接固化到各客户端的镜像源配置里源站替换为备注docker.elastic.coelastic.m.daocloud.iodocker.iodocker.m.daocloud.iodhi.iodhi.m.daocloud.iogcr.iogcr.m.daocloud.ioghcr.ioghcr.m.daocloud.iok8s.gcr.iok8s-gcr.m.daocloud.iok8s.gcr.io 已被迁移到 registry.k8s.ioregistry.k8s.iok8s.m.daocloud.iomcr.microsoft.commcr.m.daocloud.ionvcr.ionvcr.m.daocloud.ioquay.ioquay.m.daocloud.ioregistry.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.9containers: - 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: 2160h90 天决定缓存失效周期。docker compose up -dDocker 客户端/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),仅供参考