前提条件#
本教程将引导您完成在支持 GPU 的服务器上设置 Kubernetes 环境的过程。我们将安装和配置 kubectl、helm 和 minikube,确保 GPU 兼容性,以满足需要加速计算的工作负载。在本教程结束时,您将拥有一个功能齐全的 Kubernetes 环境,可以部署 vLLM Production Stack。
目录#
先决条件#
在开始之前,请确保以下条件
GPU 服务器要求
拥有一台已正确安装 GPU 和驱动程序(例如,NVIDIA 驱动程序)的服务器。
安装了NVIDIA Container Toolkit,以支持 GPU 工作负载。
访问权限
对服务器具有 root 或管理员访问权限。
具有互联网连接,可以下载所需的软件包和工具。
环境设置
基于 Linux 的操作系统(例如,Ubuntu 20.04 或更高版本)。
基本了解 Linux shell 命令。
步骤#
步骤 1:安装 kubectl#
克隆存储库并导航到 utils/ 文件夹
git clone https://github.com/vllm-project/production-stack.git cd production-stack/utils
执行脚本 install-kubectl.sh
bash install-kubectl.sh说明:此脚本下载最新版本的 kubectl(Kubernetes 命令行工具),并将其放入您的 PATH 中,以便轻松执行。
预期输出
确认
kubectl已下载并安装。使用以下命令的验证消息
kubectl version --client
示例输出
Client Version: v1.32.1
步骤 2:安装 Helm#
执行脚本 install-helm.sh
bash install-helm.sh说明
下载并安装 Helm,Kubernetes 的包管理器。
将 Helm 二进制文件放入您的 PATH 中。
预期输出
Helm 安装成功。
使用以下命令的验证消息
helm version
示例输出
version.BuildInfo{Version:"v3.17.0", GitCommit:"301108edc7ac2a8ba79e4ebf5701b0b6ce6a31e4", GitTreeState:"clean", GoVersion:"go1.23.4"}
步骤 3:安装支持 GPU 的 Minikube#
在继续之前,请确保 Docker 在无需 sudo 的情况下运行。要将您的用户添加到 docker 组,请运行
sudo usermod -aG docker $USER && newgrp docker
如果您的系统上已安装 Minikube,我们建议在继续之前卸载现有版本。您可以根据您的操作系统和包管理器使用以下命令之一
# Ubuntu / Debian
sudo apt remove minikube
# RHEL / CentOS / Fedora
sudo yum remove minikube
# or
sudo dnf remove minikube
# macOS (installed via Homebrew)
brew uninstall minikube
# Arch Linux
sudo pacman -Rs minikube
# Windows (via Chocolatey)
choco uninstall minikube
# Windows (via Scoop)
scoop uninstall minikube
卸载以前的安装后,请执行下面提供的脚本以安装最新版本。
执行脚本
install-minikube-cluster.shbash install-minikube-cluster.sh说明
如果尚未安装 Minikube,则进行安装。
通过启用 NVIDIA Container Toolkit 并以 GPU 支持启动 Minikube 来配置系统以支持 GPU 工作负载。
安装 NVIDIA
gpu-operatorchart 来管理集群中的 GPU 资源。
预期输出:如果一切顺利,您应该会看到类似以下内容的示例输出
😄 minikube v1.35.0 on Ubuntu 22.04 (kvm/amd64) ❗ minikube skips various validations when --force is supplied; this may lead to unexpected behavior ✨ Using the docker driver based on user configuration ...... ...... 🏄 Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default "nvidia" has been added to your repositories Hang tight while we grab the latest from your chart repositories... ...... ...... NAME: gpu-operator-1737507918 LAST DEPLOYED: Wed Jan 22 01:05:21 2025 NAMESPACE: gpu-operator STATUS: deployed REVISION: 1 TEST SUITE: None
安装 gpu-operator 的一些故障排除提示
如果 gpu-operator 由于 minikube(和 kind)常见的“打开文件过多”问题而无法启动,则以下快速修复可能有所帮助。
此问题可以通过一个或多个处于
CrashLoopBackOff状态的 gpu-operator pod 来观察,并通过检查它们的日志来确认。例如,$ kubectl -n gpu-operator logs daemonset/nvidia-device-plugin-daemonset -c nvidia-device-plugin IS_HOST_DRIVER=true NVIDIA_DRIVER_ROOT=/ DRIVER_ROOT_CTR_PATH=/host NVIDIA_DEV_ROOT=/ DEV_ROOT_CTR_PATH=/host Starting nvidia-device-plugin I0131 19:35:42.895845 1 main.go:235] "Starting NVIDIA Device Plugin" version=< d475b2cf commit: d475b2cfcf12b983a4975d4fc59d91af432cf28e > I0131 19:35:42.895917 1 main.go:238] Starting FS watcher for /var/lib/kubelet/device-plugins E0131 19:35:42.895933 1 main.go:173] failed to create FS watcher for /var/lib/kubelet/device-plugins/: too many open files
kind 已详细记录了此修复程序,它也适用于 minikube。
步骤 4:验证 GPU 配置#
确保 Minikube 正在运行
minikube status预期输出
minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
验证 Kubernetes 内部的 GPU 访问
kubectl describe nodes | grep -i gpu
预期输出
nvidia.com/gpu: 1 ... (plus many lines related to gpu information)
部署测试 GPU 工作负载
kubectl run gpu-test --image=nvidia/cuda:12.2.0-runtime-ubuntu22.04 --restart=Never -- nvidia-smi
等待 Kubernetes 下载并创建 pod,然后检查日志以确认 GPU 使用情况
kubectl logs gpu-test
您应该会从终端看到 nvidia-smi 的输出
结论#
通过遵循本教程,您已成功在服务器上设置了支持 GPU 的 Kubernetes 环境。现在您可以开始在 Kubernetes 上部署和测试 vLLM Production Stack。有关进一步的配置和特定于工作负载的设置,请参阅 kubectl、helm 和 minikube 的官方文档。
接下来做什么