ARTICLE DETAIL

资讯详情

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

给 OpenMetadata 部署加上镜像加速前缀

给 OpenMetadata 部署加上镜像加速前缀 给 OpenMetadata 部署加上镜像加速前缀【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror凌晨一点docker pull卡在 8% 已经四十分钟。你盯着那个不增长的进度条后面还压着 OpenMetadata 的整套 staging 部署团队明天早上就要联调。瓶颈不在你本地带宽而在源仓库架在境外跨海连线的质量你自己说了不算。DaoCloud 维护的 public-image-mirror 做的事很直接给原镜像地址加一段m.daocloud.io/前缀拉取流量先落到国内加速节点它负责帮你把剩下的路走完。K8s 部署文件不用重新设计docker 和 kind 这类工具也不用改配置。先看懂它一个按需补货的代理仓库public-image-mirror 不是提前把所有镜像搬进来的静态镜像站更像按需补货的代理仓库——你来要哪个它才去上游取哪个取完顺手放进本地货架。请求链路大致长这样三个决定你使用体验的细节所有镜像的 hashsha256与源站完全一致懒加载机制保证了这一点你拉到的数据和直连官方仓库没有差别货架有保质期内容保留 30 天manifest 内存缓存 1 小时blob 1 分钟。过期要重新走一次回源manifest 更新后大约一小时才会同步新版本能用sha256:就指定 digest其次是明确版本号latest这种可变 tag 变更后会先响应旧数据再后台重新同步部署场景最好避开。30 秒验证镜像前缀替换步骤先拿一个最小的官方镜像把整条链路走通验证加速地址结构对不对# 官方源里最小的镜像之一用来端到端验证加速链路 docker pull m.daocloud.io/docker.io/library/nginx:alpine预期输出以Status: Downloaded ...收尾几秒内完成而不是干等。注意前缀结构m.daocloud.io/是加速入口紧跟的docker.io是原始仓库标识再后面才是完整的镜像路径。OpenMetadata 批量走一遍白名单校验命令OpenMetadata 的 server、notebook 等镜像挂在docker.io的openmetadata命名空间下另外还有个docker.getcollate.io/openmetadata/*的构建源。白名单 allows.txt 里两者都有条目docker.io/openmetadata/* docker.getcollate.io/openmetadata/*替换前缀把部署 YAML 里的引用逐个换前缀改动只发生在image:行的开头# 原始引用 image: openmetadata/server:1.9.0 # 换成加速引用仓库和 tag 都不变 image: m.daocloud.io/docker.io/openmetadata/server:1.9.0跑批量校验YAML 可能引用了七八个组件逐个肉眼看白名单容易漏。先用yq把所有 image 引用导出来再拿仓库里的 hack/verify-allows.sh 逐行过一遍# 导出清单再逐行校验是否在 allows.txt 白名单里 yq .spec.template.spec.containers[].image deploy.yaml images.txt while read -r i; do ./hack/verify-allows.sh allows.txt $i || echo 拒绝: $i done images.txt脚本对带*、**的通配条目也能正确匹配返回 0 即放行。如果某行被拒多半是地址写法不规范可以交给 hack/correct-image.sh 规范化——它负责补全缺失的 registry 和 tag# 规范化镜像地址写法 ./hack/correct-image.sh openmetadata/server # 输出: docker.io/openmetadata/server:latest确认结果全部放行后改 yaml 部署到 staging预期单镜像拉取从四十分钟缩到一两分钟。拉完随手核对一下摘要docker images --digests | grep openmetadatadigest 与官方源一致说明走的是同源缓存而不是被二次加工过的包。上了生产后盯三件事定时拉取放在闲时同步队列在白天比较拥挤官方建议把拉取任务安排在凌晨北京时间 01:00-07:00。发布脚本里可以这样加一条# 每周日晚 01:30 预拉全部依赖镜像并留档 30 1 * * 0 docker pull -q $(cat /opt/deploy/images.txt) /var/log/mirror-pull.log 21日志落盘pulling fsLayer长时间不动时先确认是网络抖动还是白名单问题出现 404 就按缓存过期处理重新拉取即可缓存 30 天到期后这是正常现象。回退方案加速入口本身不可用时把前缀去掉退回官方源就是最直接的退路。对拉取稳定性要求高的环境还可以在内网再垫一层 registry 缓存做法见 docs/local-cache/客户端此后只认内网地址。排错速查表现象大概率原因一句话处置拉取直接被拒镜像不在 allows.txt 白名单跑一遍白名单校验命令确认地址写法能被通配条目命中缓存内容返回 40430 天缓存到期被清理重新拉取一次触发回源即可长时间 502 / 504白天同步队列拥挤改到凌晨 01:00-07:00 闲时再拉上游 tag 已更新拉到的还是旧版本manifest 内存缓存约 1 小时等一小时或直接用sha256:固定版本manifest digest 与预期不符latest 类可变 tag 被重新推送换成明确版本号或 digest 锁定往哪再进一步如果还想深入可以从这两个方向继续按 docs/local-cache/ 的 compose 配置在内网部署一层 registry 缓存把对外网的依赖降到一次回源或者用 Webhook 方式让新建 Pod 的镜像前缀自动改写省掉每次手改 YAML 的环节。【免费下载链接】public-image-mirror很多镜像都在国外。比如 gcr 。国内下载很慢需要加速。致力于提供连接全世界的稳定可靠安全的容器镜像服务。项目地址: https://gitcode.com/GitHub_Trending/pu/public-image-mirror创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表