导入镜像
容器镜像在每个节点上由 containerd 镜像存储本地缓存。镜像可以根据需要从注册表中拉取、通过镜像拉取进行预加载,或从镜像归档文件中导入。
预导入镜像
|
版本门控
K3s运行时的镜像预导入功能自2025年1月的版本开始可用:v1.32.0+rke2r1,v1.31.5+rke2r1,v1.30.9+rke2r1,v1.30.13+rke2r1。在此之前,RKE2仅在启动时预导入镜像。 |
如果将 Kubernetes 的 imagePullPolicy 配置为 Never,则在节点上预导入镜像是必不可少的。您可能出于安全原因或为了减少RKE2节点启动所需的时间而这样做。
RKE2包含两种机制将镜像预导入到containerd镜像存储中:
-
在线镜像导入
-
离线镜像导入
用户可以通过在 /var/lib/rancher/k3s/agent/images 目录中放置一个包含镜像名称(每行一个)的文本文件,来触发将镜像拉取至 containerd 镜像存储中。文本文件可以在RKE2启动之前放置,或在RKE2运行时创建/修改。RKE2将通过CRI API顺序拉取镜像,选用[registries.yaml](install/private_registry.md)配置。
例如:
mkdir /var/lib/rancher/rke2/agent/images
cp example.txt /var/lib/rancher/rke2/agent/images
example.txt 包含:
docker.io/library/redis:latest docker.io/library/mysql:latest
几秒钟后,`redis`和`mysql`的镜像将在节点的containerd镜像存储中可用。
使用`ctr -a /run/k3s/containerd/containerd.sock -n k8s.io images list`查询containerd镜像存储。
用户可以通过将镜像归档文件放置在`/var/lib/rancher/rke2/agent/images`目录中,直接将镜像导入到containerd镜像存储中。归档文件可以在RKE2启动之前放置,或在RKE2运行时创建/修改。RKE2会在必要时解压镜像归档文件,提取镜像,并将其加载到containerd镜像存储中。
例如:
mkdir /var/lib/rancher/rke2/agent/images
curl https://github.com/rancher/rke2/releases/download/v1.33.1%2Brke2r1/rke2-images.linux-amd64.tar.zst -O /var/lib/rancher/rke2/agent/images/rke2-images-amd64.tar.zst
几秒钟后,镜像归档文件中包含的镜像将在节点的containerd镜像存储中可用。
使用`ctr -a /run/k3s/containerd/containerd.sock -n k8s.io images list`查询containerd镜像存储。
这是在Airgap中使用的方法。请遵循[Airgap安装文档](install/airgap.md)以获取详细信息。