当前位置: 代码网 > 服务器>服务器>Linux > K8S Containerd导入Docker image镜像

K8S Containerd导入Docker image镜像

2024年08月01日 Linux 我要评论
简述K8S和容器运行时的关系,并示例containerd导入docker image镜像

kubernetes在v1.20 版本宣布弃用 dockershim(在v1.24正式移除),改用cri接口去操作更为基础的containerdcri-o

k8s在创建容器时,或多或少有些镜像无法正常拉取(网络等原因)。
还在使用docker engine时我们能方便的pull第三方同步的镜像,然后tag成需要的标签版本,让k8s从本地获取到想要的镜像。
docker将其容器格式和运行时runc捐赠给oci开放容器标准),oci标准化了容器工具和底层实现之间的大量接口。
因此改用containerdcri-o万变不离其宗,他们都支持运行符合oci标准的镜像。

理论存在,实践开始。我集群的容器运行时是containerd,以我想在k8s中安装prometheus为例,拉取不到需要的镜像prometheus-adapter。
一如既往,先从安装了docker的机器中拉image(可在docker hub或其他镜像源中搜索想要的镜像和版本),打tag,保存,传输

# 在 docker hub 上找到了第三方帮忙同步的 prometheus-adapter:v0.10.0
docker pull v5cn/prometheus-adapter:v0.10.0
# 为镜像打上k8s需要的 tag
docker tag  v5cn/prometheus-adapter:v0.10.0 registry.k8s.io/prometheus-adapter/prometheus-adapter:v0.10.0
# 将镜像保存下来
docker save -o /data/prometheus-adapter.tar registry.k8s.io/prometheus-adapter/prometheus-adapter
# 复制给各k8s worker节点
scp /data/prometheus-adapter.tar #账号@机器:路径

然后连接各k8s worker node,进行镜像导入。注意要导入至k8s使用的containerd默认命名空间是 k8s.io 否则它会找不到镜像

# 导入,-n 参数为指定命名空间
ctr -n k8s.io image import prometheus-adapter.tar
# 确认下导入
ctr -n k8s.io image list | grep prometheus
# crictl是kubernetes社区定义的cri接口工具,在这边也确认下
crictl image | grep prometheus

pod均已启动

至此k8s已能在本地找到相应镜像(记得确认imagepullpolicy已设置为ifnotpresentnever

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com