# 确认一下当前集群中正在运行的 Pod 和命名空间
kubectl get pods -A# 示例一:拉取并导入 CoreDNS 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1
docker save registry.cn-hangzhou.aliyuncs.com/google_containers/coredns:v1.11.1 -o coredns-v1.11.1.tar# 导入镜像到指定的命名空间 k8s.io
ctr -n=k8s.io images import coredns-v1.11.1.tar# 确认是否导入成功
ctr -n=k8s.io images list | grep coredns
# 示例二:拉取并导入 Rancher 镜像
kubectl get pods -A
kubectl describe pod cattle-cluster-agent-76fb79b8b-nl588 -n cattle-systemdocker pull rancher/rancher-agent:v2.8.3
docker save -o rancher-agent.tar rancher/rancher-agent:v2.8.3# 导入镜像到指定的命名空间 cattle-system
ctr -n=k8s.io images import rancher-agent.tar# 确认是否导入成功
ctr -n=k8s.io images list | grep rancher
详细步骤和问题排查:
-
查看集群中的 Pods 和命名空间:
kubectl get pods -A
命令会列出所有命名空间中的 Pod。这有助于确定哪些镜像尚未存在于集群中,或者是否某些命名空间与所需镜像不匹配。 -
拉取并保存镜像:
通过docker pull
命令从仓库中拉取所需的镜像,然后使用docker save
将其保存为.tar
文件,以便后续导入到容器运行时。 -
导入镜像:
使用ctr
命令来导入镜像。命令中的-n=k8s.io
或-n=cattle-system
指定了容器运行时的命名空间(根据实际情况需要调整)。 -
确认镜像导入成功:
通过ctr -n=k8s.io images list
或ctr -n=cattle-system images list
查看镜像是否成功导入。可以通过grep
命令进一步筛选导入的镜像名称,确保正确导入。