基于Kubernetes离线分布式部署DeepSeek-R1

🧰 准备阶段

🖥️ 1. 硬件说明

  • 服务器数量:3 台
  • 建议配置
    • CPU:至少 8 核
    • 内存:至少 16GB
    • 显存:至少 24G
    • 硬盘空间:500GB+
  • 显卡型号:NVIDIA A10
  • 网络要求:三台服务器之间可正常通信

💽 2. 软件说明

  • 操作系统:CentOS 8.5
  • Sealos:v5.0.1(用于快速部署 Kubernetes 集群及 GPU 组件)
  • Kubernetes:v1.30.5
  • **LWS (LeaderWorkerSet)**:v0.5.1(官方用于分布式大模型部署)
  • vLLM:大语言模型推理部署工具
  • DeepSeek-R1 模型:提前下载好模型文件

🚀 开始部署

📁 上传离线部署包

  • 上传部署包到集群节点
  • 解压离线部署包

🧩 安装 Nvidia 驱动

手动在每个节点上安装:

1
2
3
4
5
# 安装依赖包
rpm -ivh nvidia-driver/*.rpm

# 安装驱动程序
sh nvidia-driver/NVIDIA-Linux-x86_64-550.144.03.run

⚙️ 安装 Sealos

1
rpm -ivh sealos/sealos_5.0.1_linux_amd64.rpm

☸️ 一键部署 Kubernetes 集群

📦 加载离线镜像

1
2
3
4
5
6
7
sealos load -i kubernetes/kubernetes_v1.30.5-docker.tar
sealos load -i kubernetes/helm_v3.8.2.tar
sealos load -i kubernetes/calico_v3.24.1.tar
sealos load -i kubernetes/ingress-nginx_v1.11.3.tar
sealos load -i kubernetes/gpu-operator_v24.9.2.tar
sealos load -i kubernetes/lws_v0.5.1.tar
sealos load -i kubernetes/gpu-pod_v1.0.tar

🚀 部署集群

1
2
3
4
5
6
7
8
sealos run registry.cn-shanghai.aliyuncs.com/labring/kubernetes-docker:v1.30.5 \
registry.cn-shanghai.aliyuncs.com/labring/helm:v3.8.2 \
registry.cn-shanghai.aliyuncs.com/labring/calico:v3.24.1 \
registry.cn-shanghai.aliyuncs.com/labring/ingress-nginx:v1.11.3 \
registry.cn-hangzhou.aliyuncs.com/lusyoe/gpu-operator:v24.9.2 \
registry.cn-hangzhou.aliyuncs.com/lusyoe/lws:v0.5.1 \
--masters 192.168.32.1 \
--nodes 192.168.32.2,192.168.32.3 -p [your-ssh-passwd]

✅ 验证部署成功

1
2
3
4
5
# 查看节点状态
kubectl get nodes

# 查看 GPU Operator 是否正常运行
kubectl get pods -n gpu-operator

✅ 验证 GPU 功能

运行 GPU Pod 进行测试:

1
2
3
sealos run registry.cn-hangzhou.aliyuncs.com/lusyoe/gpu-pod:v1.0
kubectl get pods
kubectl logs gpu-pod

如果日志中出现以下内容表示验证成功:

1
2
3
4
5
6
[Vector addition of 50000 elements]
Copy input data from the host memory to the CUDA device
CUDA kernel launch with 196 blocks of 256 threads
Copy output data from the CUDA device to the host memory
Test PASSED
Done

🤖 部署 vLLM 与 DeepSeek-R1 模型

1. 加载镜像到每个节点

1
docker load -i vllm.tar

2. 解压模型文件到 /mnt

1
2
cp deepseek/DeepSeek-R1-Distill-Qwen-32B.zip /mnt/
cd /mnt/ && unzip DeepSeek-R1-Distill-Qwen-32B.zip

3. 部署 vLLM

1
kubectl apply -f vllm/vllm-manifest.yaml

4. 查看部署状态

1
kubectl get pods