在服务器k8s集群上部署kubewatch时发现镜像拉取失败,排查后发现因为拉取镜像需要访问国外服务器,所以使用本地拉取再加载的方式上传镜像。
镜像地址:us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
-
在本地使用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
-
保存镜像到本地文件
docker save -o kubewatch.tar us-central1-docker.pkg.dev/genuine-flight-317411/devel/kubewatch:v2.5
-
将
kubewatch.tar
上传到服务器上 -
使用ctr导入镜像
ctr -n k8s.io images import kubewatch.tar
注意:k8s只会使用
k8s.io
namespace中的镜像,所以我们需要添加-n k8s.io
参数指定命名空间,可以使用ctr namespace ls
查看命名空间列表 -
查看镜像否加载成功
ctr -n k8s.io images ls
or
crictl images