Merge pull request #119 from svc-design/codex/修复离线安装支持问题
Fix GPU offline packaging
This commit is contained in:
commit
934bae12d6
@ -17,7 +17,7 @@ bash scripts/create-gpu-k8s-offline-package.sh
|
||||
|
||||
- Kubernetes 二进制镜像
|
||||
- Cilium、Helm 等依赖镜像
|
||||
- NVIDIA 驱动(nvidia-driver-535)及 nvidia-container-toolkit deb 包
|
||||
- NVIDIA 驱动(nvidia-driver-535)及 nvidia-container-toolkit 离线包(deb/rpm)
|
||||
- nerdctl CLI(v${NERDCTL_VERSION:-2.1.2})
|
||||
- 必要的容器镜像,包括 `registry.k8s.io/pause:3.8`
|
||||
|
||||
|
||||
@ -40,12 +40,19 @@ curl -s -L "https://nvidia.github.io/nvidia-docker/${distribution}/nvidia-docker
|
||||
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
|
||||
|
||||
sudo apt-get update -y
|
||||
export NVIDIA_CONTAINER_TOOLKIT_VERSION=1.17.8-1
|
||||
sudo apt-get install --download-only -y \
|
||||
|
||||
if [ -n "${NVIDIA_CONTAINER_TOOLKIT_VERSION:-}" ]; then
|
||||
sudo apt-get install --download-only -y \
|
||||
nvidia-container-toolkit=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
|
||||
nvidia-container-toolkit-base=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
|
||||
libnvidia-container-tools=${NVIDIA_CONTAINER_TOOLKIT_VERSION} \
|
||||
libnvidia-container1=${NVIDIA_CONTAINER_TOOLKIT_VERSION}
|
||||
else
|
||||
sudo apt-get install --download-only -y \
|
||||
nvidia-container-toolkit nvidia-container-toolkit-base \
|
||||
libnvidia-container-tools libnvidia-container1
|
||||
fi
|
||||
|
||||
sudo apt-get install --download-only -y "${APT_PACKAGES[@]}"
|
||||
cp /var/cache/apt/archives/*.deb "$WORKDIR/packages/"
|
||||
sudo apt-get clean
|
||||
|
||||
@ -79,12 +79,26 @@ load_offline_images() {
|
||||
}
|
||||
|
||||
install_all_offline_packages() {
|
||||
if [ -d "${OFFLINE_DIR}/packages" ]; then
|
||||
echo "📦 Using offline deb packages"
|
||||
sudo dpkg -i ${OFFLINE_DIR}/packages/*.deb 2>/dev/null || sudo apt-get -f install -y
|
||||
return 0
|
||||
if [ ! -d "${OFFLINE_DIR}/packages" ]; then
|
||||
return 1
|
||||
fi
|
||||
return 1
|
||||
|
||||
echo "📦 Using offline packages"
|
||||
|
||||
shopt -s nullglob
|
||||
debs=("${OFFLINE_DIR}"/packages/*.deb)
|
||||
rpms=("${OFFLINE_DIR}"/packages/*.rpm)
|
||||
|
||||
if [ ${#debs[@]} -gt 0 ]; then
|
||||
sudo dpkg -i "${debs[@]}" 2>/dev/null || sudo apt-get -f install -y
|
||||
fi
|
||||
|
||||
if [ ${#rpms[@]} -gt 0 ] && command -v dnf >/dev/null; then
|
||||
sudo dnf install -y "${rpms[@]}"
|
||||
fi
|
||||
|
||||
shopt -u nullglob
|
||||
return 0
|
||||
}
|
||||
|
||||
install_base() {
|
||||
@ -120,6 +134,7 @@ install_nerdctl() {
|
||||
install_nvidia() {
|
||||
echo "[3/8] 安装 NVIDIA 驱动和容器工具"
|
||||
distribution="ubuntu22.04"
|
||||
|
||||
if [ -f "${OFFLINE_DIR}/nvidia-gpgkey" ]; then
|
||||
sudo install -m 0644 "${OFFLINE_DIR}/nvidia-gpgkey" /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
|
||||
else
|
||||
@ -127,7 +142,9 @@ install_nvidia() {
|
||||
sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
|
||||
fi
|
||||
|
||||
if ! install_all_offline_packages; then
|
||||
if install_all_offline_packages; then
|
||||
echo "✅ 离线安装 NVIDIA 相关包完成"
|
||||
else
|
||||
proxy_curl -sL https://nvidia.github.io/nvidia-docker/${distribution}/nvidia-docker.list | \
|
||||
sed 's|^deb |deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] |' | \
|
||||
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
|
||||
|
||||
Loading…
Reference in New Issue
Block a user