containerd镜像管理
我在 k8s 集群中尝试使用 containerd 作为 CRI,发现镜像下载和导入与 docker 存在一些区别,大致如下:
- containerd 命令行工具 ctr 特性不如 docker 丰富,如 ctr 1.2 并没有 tag 子命令,直到 1.3 才有
- 为支持多租户隔离,containerd 有 namespace 概念,不同 namespace 下的 image、container 均不同,直接使用 ctr 操作时,会使用 default namespace
如果使用的是 ctr 1.2,可以通过 docker tag 镜像,再使用 ctr 导入镜像
1 | docker save k8s.gcr.io/pause -o pause.tar |
k8s 只会使用 k8s.io namespace 中镜像。当导入k8s使用的镜像的时候,需要指定namespace
1 | [root@k8s-worker-01 ~]# ctr namespace ls |
ctr导出镜像
1 | ctr -n <namespaces> image export heapster-amd64:v1.5.4.tar k8s.gcr.io/heapster-amd64:v1.5.4 |
ctr导入镜像
1 | ctr -n k8s.io images import heapster-amd64:v1.5.4.tar |