containerd 镜像导入

288 阅读1分钟

在服务器k8s集群上部署kubewatch时发现镜像拉取失败,排查后发现因为拉取镜像需要访问国外服务器,所以使用本地拉取再加载的方式上传镜像。

镜像地址:us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5

  1. 在本地使用docker拉取镜像(科学上网)

    docker pull us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
    

    由于我本地是arm64架构,服务器是amd64架构,所有需要添加参数指定拉取的架构

    docker pull --platform linux/amd64 us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
    
  2. 保存镜像到本地文件

    docker save -o kubewatch.tar us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
    
  3. kubewatch.tar上传到服务器上

  4. 使用ctr导入镜像

    ctr -n k8s.io images import kubewatch.tar
    

    注意:k8s只会使用k8s.ionamespace中的镜像,所以我们需要添加 -n k8s.io 参数指定命名空间,可以使用ctr namespace ls查看命名空间列表

  5. 查看镜像否加载成功

    ctr -n k8s.io images ls
    

    or

    crictl images