ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

加一个前缀,Kafka 镜像同步不再绕远路

加一个前缀,Kafka 镜像同步不再绕远路 加一个前缀Kafka 镜像同步不再绕远路【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirrordocker pull bitnami/kafka 的进度条半天不走瓶颈在跨国链路不在带宽。DaoCloud 开源的 public-image-mirror 把镜像同步到国内链路地址前加一个前缀就能改走加速通道。本文讲清这个镜像加速服务的原理、白名单机制和 containerd 集群的接法。镜像加速原理按需同步、哈希对齐与缓存期限这个服务本质是源仓库的 mirror不重新构建镜像只把镜像数据搬到国内存储。拉取时的体验由三条规则决定按需同步没人要过的镜像不提前搬。首次拉取没命中缓存时请求先进同步队列后台从源站取回数据写入国内存储之后再次拉取直接命中。这意味着冷镜像的第一次拉取要陪跑一次同步但同一环境的第二台机器再拉同一个镜像基本就是本地速度。哈希对齐同步过来的所有 sha256 都和源站相同。这意味着你不用怀疑镜像被二次加工digest 可以直接拿去和源站核对。缓存有期限同步内容只保留 30 天过期后重新同步Manifest 内存缓存 1 小时Blob 内存缓存 1 分钟。这意味着 latest 这类可变 tag 的内容最多滞后 1 小时生产环境建议优先用 sha256 固定其次用明确版本号。同步范围由一份白名单控制只有命中的镜像才会被搬运条目支持*与**两级通配加仓库不用改代码。同步队列的状态页queue.m.daocloud.io/status/可以看到进行中和刚完成的同步任务。整个按需同步流程画出来是这样的操作篇确认白名单三步切换 Kafka 镜像加速前缀第一步确认目标镜像在白名单里。白名单文件 allows.txt 里有整站通配条目这条命令就是查它grep ^docker.io allows.txt输出包含docker.io/*一行覆盖整个 docker.io 命名空间bitnami/kafka 就在其中。这意味着这类镜像不用申请白名单直接能拉。第二步加前缀拉取以 3.9.0 为例docker pull m.daocloud.io/docker.io/bitnami/kafka:3.9.0也可以直接换域名比如docker.m.daocloud.io/bitnami/kafka:3.9.0gcr.io、ghcr.io 等仓库各有一个替换域名对照表在 README.md 里。第三步核对 digest。这两条命令把源站 manifest 摘要和拉下来的本地镜像摘要打出来对比docker manifest inspect docker.io/bitnami/kafka:3.9.0 | grep digest docker images --digests --no-trunc | grep bitnami/kafka两边一致说明拉到的是源站原始内容。进阶篇containerd 集群镜像配置与队列预热containerd 集群镜像配置新版 containerd 不再用 config.toml 里的 registry-mirrors 段改按 host 配独立的 hosts.toml。在每台节点写# /etc/containerd/certs.d/docker.io/hosts.toml server https://registry-1.docker.io [host.https://docker.m.daocloud.io] capabilities [pull, resolve]改完重启 containerd集群里所有节点拉 docker.io 镜像都走加速链路。项目 README.md 特别提醒各源站内容互不相同不要把 docker.io 之外的站点配进 docker 的 mirror。用 kubespray 部署的话也可以直接设 containerd_registries_mirrors 参数。如何用同步队列给大镜像预热发布窗口前先手工拉一遍目标镜像让它提前进同步队列发布时全员命中缓存。项目建议批量拉取放在闲时——北京时间凌晨 01 点到 07 点其余时段比较拥挤状态页的记录只保留 1 小时排查问题要趁早。白名单维护脚本与内网本地缓存白名单的日常维护靠 hack/ 目录里的四个脚本verify-allows.sh 校验条目是否覆盖目标镜像fmt-image-match.sh 整理通配规则并去重verify-image-match.sh 检查单个镜像是否命中correct-image.sh 把各种写法的镜像地址归一成标准格式。如果集群出不去公网docs/local-cache/README.md 里还有一层内网缓存方案用 docker-compose 起一个 registry 作本地代理节点只访问内网地址和加速前缀叠加使用。接入路径到这里就齐了单机加前缀集群写一份 hosts.toml内网叠一层本地缓存。白名单维护脚本都在 hack/ 里照着跑一遍就能看懂规则。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表