Merge pull request #115 from svc-design/codex/调整kubeadm和sealos支持k8s版本

This commit is contained in:
shenlan 2025-06-27 12:38:13 +08:00 committed by GitHub
commit d4aa40c67f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 57 additions and 11 deletions

View File

@ -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)

View File

@ -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` 替换为目标次要版本。

View File

@ -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"

View File

@ -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