67 lines
2.2 KiB
Bash
Executable File
67 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
# Versions
|
|
K8S_VERSION="${K8S_VERSION:-labring/kubernetes:v1.25.16}"
|
|
CILIUM_VERSION="${CILIUM_VERSION:-labring/cilium:v1.13.4}"
|
|
HELM_VERSION="${HELM_VERSION:-labring/helm:v3.9.4}"
|
|
NERDCTL_VERSION="${NERDCTL_VERSION:-2.1.2}"
|
|
NVIDIA_PLUGIN_VERSION="${NVIDIA_PLUGIN_VERSION:-v0.17.1}"
|
|
NVIDIA_DRIVER_VERSION="${NVIDIA_DRIVER_VERSION:-nvidia-driver-535}"
|
|
CUDA_SAMPLE_IMAGE="${CUDA_SAMPLE_IMAGE:-nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0}"
|
|
|
|
IMAGES=(
|
|
"$K8S_VERSION"
|
|
"$CILIUM_VERSION"
|
|
"$HELM_VERSION"
|
|
"nvcr.io/nvidia/k8s-device-plugin:${NVIDIA_PLUGIN_VERSION}"
|
|
"$CUDA_SAMPLE_IMAGE"
|
|
)
|
|
|
|
WORKDIR="offline"
|
|
mkdir -p "$WORKDIR/images" "$WORKDIR/packages"
|
|
|
|
# Download required APT packages
|
|
APT_PACKAGES=(
|
|
curl gnupg2 ca-certificates lsb-release apt-transport-https \
|
|
software-properties-common openssh-client openssh-server uidmap \
|
|
containerd "$NVIDIA_DRIVER_VERSION" nvidia-container-toolkit
|
|
)
|
|
|
|
sudo apt-get update -y
|
|
sudo apt-get install --download-only -y "${APT_PACKAGES[@]}"
|
|
cp /var/cache/apt/archives/*.deb "$WORKDIR/packages/"
|
|
sudo apt-get clean
|
|
|
|
# Download sealos deb
|
|
curl -L -o "$WORKDIR/sealos_5.0.1_linux_amd64.deb" \
|
|
https://github.com/labring/sealos/releases/download/v5.0.1/sealos_5.0.1_linux_amd64.deb
|
|
|
|
# Download nerdctl archive
|
|
nerdctl_archive="nerdctl-full-${NERDCTL_VERSION}-linux-amd64.tar.gz"
|
|
curl -L -o "$WORKDIR/${nerdctl_archive}" \
|
|
"https://github.com/containerd/nerdctl/releases/download/v${NERDCTL_VERSION}/${nerdctl_archive}"
|
|
|
|
# Pull required container images
|
|
for img in "${IMAGES[@]}"; do
|
|
echo "Pulling $img"
|
|
docker pull "$img"
|
|
done
|
|
|
|
docker save -o "$WORKDIR/images/gpu_k8s_images.tar" "${IMAGES[@]}"
|
|
|
|
# Download NVIDIA device plugin manifest and gpg key
|
|
PLUGIN_FILE="nvidia-device-plugin.yml"
|
|
curl -L -o "$WORKDIR/${PLUGIN_FILE}" \
|
|
"https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/${NVIDIA_PLUGIN_VERSION}/deployments/static/${PLUGIN_FILE}"
|
|
curl -L -o "$WORKDIR/nvidia-gpgkey" https://nvidia.github.io/nvidia-docker/gpgkey
|
|
|
|
# Include deployment script
|
|
cp "$(dirname "$0")/gpu-k8s.sh" "$WORKDIR/"
|
|
|
|
# Create final archive
|
|
TAR_NAME="gpu_k8s_offline_packages.tar.gz"
|
|
tar -czf "$TAR_NAME" -C "$WORKDIR" .
|
|
|
|
echo "Created $TAR_NAME"
|