52 lines
1.8 KiB
Django/Jinja
52 lines
1.8 KiB
Django/Jinja
#!/bin/bash
|
||
# 在下载主机上需要安装docker
|
||
|
||
set -e
|
||
|
||
curdir=$(pwd)
|
||
OUT=./k8s-offline.tgz
|
||
TMP=./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 "📥 下载 crictl"
|
||
curl -L https://github.com/kubernetes-sigs/cri-tools/releases/download/${CRICLT_VERSION}/crictl-${CRICLT_VERSION}-linux-${ARCH}.tar.gz -o crictl-${CRICLT_VERSION}-linux-${ARCH}.tar.gz
|
||
echo "📥 下载 CNI plugins"
|
||
curl -L https://github.com/containernetworking/plugins/releases/download/${CNI_VERSION}/cni-plugins-linux-${ARCH}-${CNI_VERSION}.tgz -o cni-plugins.tgz
|
||
|
||
echo "📥 下载 containerd"
|
||
CONTAINERD_URL="https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-${ARCH}.tar.gz"
|
||
curl -L ${CONTAINERD_URL} -o containerd.tar.gz
|
||
|
||
|
||
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 "${images[@]}"; 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"
|
||
|