最终目标:在 Mac 主机获得一份包含 Calico 镜像的
.tar
文件,用于离线安装 K8s 网络插件。
✅ 一、准备工作
1. 安装 Lima 和 nerdctl
brew install lima nerdctl
✅ 二、启动 Lima 虚拟机(基于 Ubuntu)
1. 启动默认 Lima 实例
limactl start default
切换root账户
sudo -i
2. 进入 Lima 虚拟机
limactl shell default
3. 安装 containerd 和 nerdctl(在 Lima VM 中)
sudo apt update
sudo apt install -y containerd
sudo systemctl enable --now containerd
✅ 三、下载并打包 Calico 镜像
1. 创建脚本并进入工作目录
mkdir -p ~/calico && cd ~/calico
nano pull_calico_images_nerdctl.sh
2. 粘贴以下脚本内容
#!/bin/bash
set -euo pipefail
images=(
"quay.io/tigera/operator:v1.32.3"
"quay.io/calico/cni:v3.27.0"
"quay.io/calico/kube-controllers:v3.27.0"
"quay.io/calico/node:v3.27.0"
"quay.io/calico/pod2daemon-flexvol:v3.27.0"
"quay.io/calico/typha:v3.27.0"
)
output_dir="/calico/calico-images"
sudo mkdir -p "$output_dir"
for img in "${images[@]}"; do
filename="${img//[\/:]/_}.tar"
echo "🔄 Pulling $img"
sudo nerdctl pull "$img"
echo "💾 Saving to $output_dir/$filename"
sudo nerdctl save -o "$output_dir/$filename" "$img"
done
echo "🎉 Done. Images saved to $output_dir"
3. 运行脚本
chmod +x pull_calico_images_nerdctl.sh
sudo ./pull_calico_images_nerdctl.sh
✅ 四、打包镜像文件以便复制到 Mac 主机
1. 打包为压缩文件
sudo tar -czf /tmp/calico-images.tar.gz -C /calico calico-images
✅ 五、从 Lima 虚拟机复制到主机
1. 在 macOS 主机执行复制命令
limactl copy default:/tmp/calico-images.tar.gz ./calico-images.tar.gz
2. 解压到本地目录
mkdir -p ./calico-images
tar -xzf ./calico-images.tar.gz -C ./calico-images --strip-components=1
✅ 六、验证结果
ls ./calico-images
你将看到多个 .tar
文件:
quay.io_calico_node_v3.27.0.tar
quay.io_calico_cni_v3.27.0.tar
...
✅ 七、可选:导入到离线环境
将 .tar
文件复制到你的离线 K8s 节点并执行:
sudo nerdctl load -i quay.io_calico_node_v3.27.0.tar