#!/bin/bash # 在下载主机上需要安装docker set -e curdir=$(pwd) OUT=$curdir/k8s-offline.tgz TMP=$curdir/offline-cache apt install podman-docker mkdir -p $TMP/bin $TMP/manifests $TMP/images $TMP/deps echo "[1] 下载 依赖包" cd $TMP/deps apt install --download-only nfs-common rpcbind cp /var/cache/apt/archives/*.deb . echo "[2] 下载 Kubernetes 二进制 {{ kubernetes.version }}" cd $TMP/bin curl -LO https://dl.k8s.io/release/v{{ kubernetes.version }}/bin/linux/amd64/kubeadm curl -LO https://dl.k8s.io/release/v{{ kubernetes.version }}/bin/linux/amd64/kubelet curl -LO https://dl.k8s.io/release/v{{ kubernetes.version }}/bin/linux/amd64/kubectl chmod +x kubeadm kubelet kubectl cd $curdir echo "[3] 下载镜像(kubeadm config images)" $TMP/bin/kubeadm config images list --kubernetes-version {{ kubernetes.version }} > $TMP/images/images.txt for img in $(cat $TMP/images/images.txt); do echo "Pull image: $img" docker pull $img docker save -o $TMP/images/$(echo $img | tr '/:' '_').tar $img done echo "[4] 复制 manifests" cp -r ../manifests/* $TMP/manifests/ echo "[5] 打包离线资源" tar czf $OUT offline-cache echo "已生成离线包: $OUT"