44 lines
1.2 KiB
Django/Jinja
44 lines
1.2 KiB
Django/Jinja
#!/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"
|
||
|