From f5b0bf2ee174fa698cdf93511f227f8090540fcd Mon Sep 17 00:00:00 2001 From: shenlan Date: Fri, 27 Jun 2025 12:37:57 +0800 Subject: [PATCH] Update K8s version to 1.29.9 and document apt repo --- Readme.md | 4 +++ docs/gpu-offline-package.md | 42 +++++++++++++++++++++++ scripts/create-gpu-k8s-offline-package.sh | 10 +++--- scripts/gpu-k8s.sh | 12 +++---- 4 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 docs/gpu-offline-package.md diff --git a/Readme.md b/Readme.md index fe1f157..59c21ed 100644 --- a/Readme.md +++ b/Readme.md @@ -3,3 +3,7 @@ 1. clone repo 2. create repo Actions secrets and variables: HELM_REPO_PASSWORD 3. push your code will be tigger github ci pipeline + +Additional documentation: + +- [GPU Kubernetes offline package](docs/gpu-offline-package.md) diff --git a/docs/gpu-offline-package.md b/docs/gpu-offline-package.md new file mode 100644 index 0000000..8d32248 --- /dev/null +++ b/docs/gpu-offline-package.md @@ -0,0 +1,42 @@ +# 构建 GPU Kubernetes 离线包 + +本仓库提供 `scripts/create-gpu-k8s-offline-package.sh` 脚本,用于生成在无网络环境下部署 GPU 集群所需的离线文件。脚本默认打包 Kubernetes 以及相关组件的 `v1.29.9` 版本,你可以通过环境变量调整需要的版本。 + +## 使用方法 + +```bash +# 构建默认版本 (v1.29.9) +bash scripts/create-gpu-k8s-offline-package.sh + +# 指定其它版本,例如 v1.28.7 +K8S_VERSION=labring/kubernetes:v1.28.7 \ +KUBEADM_VERSION=1.28.7 \ +bash scripts/create-gpu-k8s-offline-package.sh +``` + +生成的 `gpu_k8s_offline_packages.tar.gz` 包含以下内容: + +- Kubernetes 二进制镜像 +- Cilium、Helm 等依赖镜像 +- kubeadm/kubelet/kubectl deb 包 +- NVIDIA 驱动及插件 + +离线包在部署时可同时适用于 `kubeadm` 或 `sealos`,最低推荐 Kubernetes 版本为 **1.29**,也可以使用更新的 `1.30` 等稳定版本。 + +## 在线安装 kubeadm/kubelet/kubectl + +若主机可以访问互联网,可参考以下命令安装适用于 Kubernetes 1.29 的工具链: + +```bash +sudo apt-get update +sudo apt-get install -y apt-transport-https ca-certificates curl gpg +curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \ + sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg +echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | \ + sudo tee /etc/apt/sources.list.d/kubernetes.list +sudo apt-get update +sudo apt-get install -y kubelet kubeadm kubectl +sudo apt-mark hold kubelet kubeadm kubectl +``` + +上述仓库仅提供 Kubernetes 1.29 系列的 deb 包,如果需要其它版本,请将 URL 中的 `v1.29` 替换为目标次要版本。 diff --git a/scripts/create-gpu-k8s-offline-package.sh b/scripts/create-gpu-k8s-offline-package.sh index 5676a38..29e060c 100755 --- a/scripts/create-gpu-k8s-offline-package.sh +++ b/scripts/create-gpu-k8s-offline-package.sh @@ -2,14 +2,14 @@ set -euo pipefail # Versions -K8S_VERSION="${K8S_VERSION:-labring/kubernetes:v1.25.16}" +K8S_VERSION="${K8S_VERSION:-labring/kubernetes:v1.29.9}" 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}" -KUBEADM_VERSION="${KUBEADM_VERSION:-1.25.16}" +KUBEADM_VERSION="${KUBEADM_VERSION:-1.29.9}" IMAGES=( "$K8S_VERSION" @@ -38,10 +38,10 @@ curl -s -L "https://nvidia.github.io/nvidia-docker/${distribution}/nvidia-docker sed 's#^deb #deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] #' | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list -# Add Kubernetes repository for kubeadm/kubelet/kubectl (Ubuntu 22.04 compatible) -curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | \ +# Add Kubernetes repository for kubeadm/kubelet/kubectl (Kubernetes 1.29) +curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \ sudo gpg --dearmor -o /usr/share/keyrings/kubernetes-archive-keyring.gpg -echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | \ +echo "deb [signed-by=/usr/share/keyrings/kubernetes-archive-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | \ sudo tee /etc/apt/sources.list.d/kubernetes.list cp /usr/share/keyrings/kubernetes-archive-keyring.gpg "$WORKDIR/kubernetes-archive-keyring.gpg" diff --git a/scripts/gpu-k8s.sh b/scripts/gpu-k8s.sh index 785b63c..a89aa77 100644 --- a/scripts/gpu-k8s.sh +++ b/scripts/gpu-k8s.sh @@ -5,7 +5,7 @@ set -euo pipefail MASTER_IP=$(hostname -I | awk '{print $1}') USER=${USER:-$(whoami)} SSH_KEY="${HOME}/.ssh/id_rsa" -K8S_VERSION="labring/kubernetes:v1.25.16" +K8S_VERSION="labring/kubernetes:v1.29.9" CILIUM_VERSION="labring/cilium:v1.13.4" HELM_VERSION="labring/helm:v3.9.4" NVIDIA_DRIVER_VERSION="nvidia-driver-535" @@ -170,7 +170,7 @@ install_kubeadm() { echo "📦 安装 kubeadm、kubelet、kubectl" # 默认安装版本,可传参覆盖 - local KUBE_VERSION="${1:-1.25.16}" + local KUBE_VERSION="${1:-1.29.9}" echo "➡️ 目标版本: $KUBE_VERSION" @@ -186,18 +186,18 @@ install_kubeadm() { # 在线安装 sudo apt-get update - sudo apt-get install -y apt-transport-https ca-certificates curl gnupg + sudo apt-get install -y apt-transport-https ca-certificates curl gpg sudo mkdir -p /etc/apt/keyrings if [ -f "${OFFLINE_DIR}/kubernetes-archive-keyring.gpg" ]; then sudo cp "${OFFLINE_DIR}/kubernetes-archive-keyring.gpg" /etc/apt/keyrings/ else - curl -fsSL https://packages.cloud.google.com/apt/doc/apt-key.gpg | \ - gpg --dearmor | sudo tee /etc/apt/keyrings/kubernetes-archive-keyring.gpg > /dev/null + curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | \ + sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-archive-keyring.gpg fi echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] \ - https://apt.kubernetes.io/ kubernetes-xenial main" | \ + https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /" | \ sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt-get update