containerd配置常用镜像代理加速
起因
最近把测试的k8s集群迁移到containerd中,正好整理下相关配置,考虑到k8s中大量项目使用k8s.gcr.io
或者quay.io
的镜像,在国内无法正常拉取,希望做一个完美无缝的方式实现镜像拉取自由
考虑
虽然我的电脑使用全局透明代理,网络环境几乎完美,不存在任何障碍,但是在测试服务器上我不喜欢设置透明代理这样的网络方案,在这次迁移containerd的过程中发现containerd支持设置多个registry的镜像地址打算尝试下镜像的方案
实施
搭建镜像代理
搭建代理的方案有很多,例如使用vps做反向代理,或者使用国内部分镜像,我选择使用cloudflare提供的worker,其原理是使用js自定义代理逻辑实现网站代理,关键最良心的提供一定量的免费额度
折腾cloudflare worker的过程并不顺利,好在最近完美解决,具体过程改天另写,详细记录下各家镜像仓库在docker协议上实现的不同导致的兼容性小坑,最终都要我用js来修改协议实现兼容,最终实现的效果如下:
github加速代理
代理地址:https://github.920111.xyz
使用方法,简单在所有需要clone或者download的地址前面加上上述代理地址,
例如git clone https://github.com/aaa/bbb
可以写成 git clone https://github.920111.xyz/https://github.com/aaa/bbb
解决临时下载的问题,
虽然使用cloudflare下载速度不算快,不能我的vps相比,但是也能有几百K/s,一般下载足够使用了。
k8s镜像加速代理
代理地址: https://k8s.920111.xyz
使用方法,拉取镜像的时候替换k8s.gcr.io
为k8s.920111.xyz
gcr镜像加速代理
代理地址: https://gcr.920111.xyz
使用方法,拉取镜像的时候替换gcr.io
为gcr.920111.xyz
quay镜像加速代理
代理地址:https://quay.920111.xyz
使用方法,拉取镜像的时候替换quay.io
为quay.920111.xyz
docker镜像加速代理
代理地址:https://docker.920111.xyz
使用方法,拉取镜像的时候替换docker.io
为docker.920111.xyz
containerd配置镜像加速
由于containerd支持配置任意域名的镜像,相比之前docker只能配置docker.io的镜像,大大增加镜像配置的灵活性,通读了相关文档,并且调试了一下午终于搞定,其中最大的一个坑就是配置文件中如果没有version这个字段的话,配置文件无法生效,之所以调试了一下午也是因为怎么配置实际使用效果都不符合预期,晕。
最终配置如下
1 | $ cat /etc/containerd/config.toml |
效果
配置完成后,k8s环境中直接拉取原本无法拉取的镜像,再也不用去改镜像地址,在k8s端使用是无感的,管理起来方便多了,关键这个方案还是白嫖CF的CDN,这样的良心公司什么时候国内才能有啊。
这个域名?
920111.xyz这个域名是我随手注册的,用来放些没用的东西,这个域名之前100块购买了10年,反正也没用,这次正好用上了