最终目标:在 Mac 主机获得一份包含 Calico 镜像的
.tar
文件,用于离线安装 K8s 网络插件。
brew install lima nerdctl
limactl start default
切换root账户
sudo -i
limactl shell default
sudo apt update
sudo apt install -y containerd
sudo systemctl enable --now containerd
mkdir -p ~/calico && cd ~/calico
nano pull_calico_images_nerdctl.sh
#!/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"
chmod +x pull_calico_images_nerdctl.sh
sudo ./pull_calico_images_nerdctl.sh
sudo tar -czf /tmp/calico-images.tar.gz -C /calico calico-images
limactl copy default:/tmp/calico-images.tar.gz ./calico-images.tar.gz
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