1、使用ctr导入镜像
ctr image import dashboard.tar
#查询镜像,为什么没有刚才导入的镜像?
crictl images
2、原因分析
ctr是containerd自带的工具,有命名空间的概念,若是k8s相关的镜像,都默认在k8s.io这个命名空间,所以导入镜像时需要指定命令空间为k8s.io
#使用ctr命令指定命名空间导入镜像
ctr -n=k8s.io image import dashboard.tar
#查看镜像,可以看到可以查询到了
crictl images
ctr 是 containerd 的一个客户端工具。
crictl 是 CRI 兼容的容器运行时命令行接口,可以使用它来检查和调试 k8s 节点上的容器运行时和应用程序。
ctr -v 输出的是 containerd 的版本,crictl -v 输出的是当前 k8s 的版本,从结果显而易见你可以认为 crictl 是用于 k8s 的。
一般来说某个主机安装了 k8s 后,命令行才会有 crictl 命令。而 ctr 是跟 k8s 无关的,主机安装了 containerd 服务后就可以操作 ctr 命令。
===============================================
# docker镜像 迁移 ctr
docker save -o o.tar tensorflow/tensorflow:2.2.3-gpu-py3
# ctr导入镜像 不支持 build, commit 镜像
ctr -n k8s.io i import o.tar
ctr -n default i import o.tar
===============================================
或者将image是从一台机器上的image迁移到另一台机器上
### Convert 'ctr image' to 'crictl image'
## pull image
ctr image pull k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
ctr image pull k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
or
crictl pull k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
ctr image pull k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
#export image
ctr image export adapter.tar k8s.gcr.io/prometheus-adapter/prometheus-adapter:v0.9.1
ctr image export metrics.tar k8s.gcr.io/kube-state-metrics/kube-state-metrics:v2.3.0
#After migrating to the specified server, distribute the image to each Node
ansible kube-node -i ~/kubespray/inventory/sdan_cluster/hosts.ini -m copy -a 'src=/root/images/adapter.tar dest=/root/ owner=root group=root mode=0644'
ansible kube-node -i ~/kubespray/inventory/sdan_cluster/hosts.ini -m copy -a 'src=/root/images/metrics.tar dest=/root/ owner=root group=root mode=0644'
#import image
ansible kube-node -o -i ~/kubespray/inventory/sdan_cluster/hosts.ini -m command -a "ctr -n=k8s.io image import /root/adapter.tar"
ansible kube-node -o -i ~/kubespray/inventory/sdan_cluster/hosts.ini -m command -a "ctr -n=k8s.io image import /root/metrics.tar"
===============================================
##要下载镜像的名称,可以通过 kubeadm config images list命令获取
kubeadm config images list --kubernetes-version=v1.15.2