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

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值