参考:
http://www.zzfly.net/k3s-installation-and-containerd-registry/
https://github.com/containerd/cri/blob/master/docs/registry.md#configure-registry-endpoint
https://cr.console.aliyun.com/cn-hongkong/instances/mirrors
https://docs.rancher.cn/k3s/configuration.html#_8-containerd-%E5%92%8C-docker
最近捣鼓好了黑苹果,晚上也回家自己做饭,可以边吃饭边看电视,于是又有了兴致下下电影了,于是打算把旧笔记本上的 jellyfin 更新一下版本。
在 rancher 上改改版本号,然后就卡住了,在 event
中可以看到,卡在了拉镜像这一步。
k3s 默认是基于 containerd
的,我最开始用 k3s
的时候,手动改成了 docker
,所以设置设置 docker
加速源,就不会有卡在拉镜像这一步了,后来我重新部署了一次 k3s
,就使用的默认的 containerd
,这个问题就一直存在了。
最开始我还不太懂的时候,以为只要设置好 docker
加速源就好了,后来虽然发现了不对劲,但是也懒得花时间去研究 containerd
了。
最近兴致不错,近期该学的东西也进展的不错,顺手解决一下这个问题。
通过 crictl info
命令可以查看 containerd
当前的配置信息
可以看到是默认的镜像源。
k3s
会在目录 /var/lib/rancher/k3s/agent/etc/containerd
下创建一个 config.toml
文件作为 containerd
的配置文件,我们要做的就是,在同目录下把这个文件复制出来一个 config.toml.tmpl
文件,然后添加镜像源相关的配置进去。
# 在 config.toml.tmpl 文件中添加
[plugins.cri.registry.mirrors]
[plugins.cri.registry.mirrors."docker.io"]
endpoint = ["https://docker.mirrors.ustc.edu.cn"]
为什么要复制一个 config.toml.tmpl 文件,而不是直接改 config.toml 文件,请参考文档:Containerd 和 Docker
执行 systemctl restart k3s
命令重启服务。
等待重启完成后,再看看 containerd
的状态信息: