Helm#
用于在 Kubernetes 上部署 vLLM 的 Helm Chart
Helm 是 Kubernetes 的包管理器。它将帮助您在 k8s 上部署 vLLM,并自动化 vLLMm Kubernetes 应用程序的部署。借助 Helm,您可以通过覆盖变量值,使用不同的配置将相同的框架架构部署到多个命名空间。
本指南将引导您完成使用 Helm 部署 vLLM 的过程,包括必要的先决条件、helm install 的步骤以及关于架构和 values 文件的文档。
先决条件#
在开始之前,请确保您已具备以下条件
一个正在运行的 Kubernetes 集群
NVIDIA Kubernetes 设备插件 (
k8s-device-plugin
):可以在 NVIDIA/k8s-device-plugin 找到集群中可用的 GPU 资源
带有将要部署模型的 S3
安装 Chart#
要使用发布名称 test-vllm
安装 Chart
helm upgrade --install --create-namespace --namespace=ns-vllm test-vllm . -f values.yaml --set secrets.s3endpoint=$ACCESS_POINT --set secrets.s3bucketname=$BUCKET --set secrets.s3accesskeyid=$ACCESS_KEY --set secrets.s3accesskey=$SECRET_KEY
卸载 Chart#
要卸载 test-vllm
部署
helm uninstall test-vllm --namespace=ns-vllm
该命令将删除与 Chart 关联的所有 Kubernetes 组件,包括持久卷,并删除发布。
架构#

值#
键 |
类型 |
默认值 |
描述 |
---|---|---|---|
自动扩缩 |
对象 |
{“enabled”:false,”maxReplicas”:100,”minReplicas”:1,”targetCPUUtilizationPercentage”:80} |
自动扩缩配置 |
autoscaling.enabled |
布尔值 |
false |
启用自动扩缩 |
autoscaling.maxReplicas |
整数 |
100 |
最大副本数 |
autoscaling.minReplicas |
整数 |
1 |
最小副本数 |
autoscaling.targetCPUUtilizationPercentage |
整数 |
80 |
自动扩缩的目标 CPU 利用率 |
configs |
对象 |
{} |
Configmap |
containerPort |
整数 |
8000 |
容器端口 |
customObjects |
列表 |
[] |
自定义对象配置 |
deploymentStrategy |
对象 |
{} |
部署策略配置 |
externalConfigs |
列表 |
[] |
外部配置 |
extraContainers |
列表 |
[] |
附加容器配置 |
extraInit |
对象 |
{“pvcStorage”:”1Gi”,”s3modelpath”:”relative_s3_model_path/opt-125m”, “awsEc2MetadataDisabled”: true} |
init 容器的附加配置 |
extraInit.pvcStorage |
字符串 |
“50Gi” |
s3 的存储大小 |
extraInit.s3modelpath |
字符串 |
“relative_s3_model_path/opt-125m” |
托管模型权重和配置文件的 s3 上的模型路径 |
extraInit.awsEc2MetadataDisabled |
布尔值 |
true |
禁用 Amazon EC2 实例元数据服务的使用 |
extraPorts |
列表 |
[] |
附加端口配置 |
gpuModels |
列表 |
[“TYPE_GPU_USED”] |
使用的 GPU 类型 |
image |
对象 |
{“command”:[“vllm”,”serve”,”/data/”,”–served-model-name”,”opt-125m”,”–host”,”0.0.0.0”,”–port”,”8000”],”repository”:”vllm/vllm-openai”,”tag”:”latest”} |
镜像配置 |
image.command |
列表 |
[“vllm”,”serve”,”/data/”,”–served-model-name”,”opt-125m”,”–host”,”0.0.0.0”,”–port”,”8000”] |
容器启动命令 |
image.repository |
字符串 |
“vllm/vllm-openai” |
镜像仓库 |
image.tag |
字符串 |
“latest” |
镜像标签 |
livenessProbe |
对象 |
{“failureThreshold”:3,”httpGet”:{“path”:”/health”,”port”:8000},”initialDelaySeconds”:15,”periodSeconds”:10} |
存活探针配置 |
livenessProbe.failureThreshold |
整数 |
3 |
探针连续失败多少次后,Kubernetes 认为总体检查失败:容器未存活 |
livenessProbe.httpGet |
对象 |
{“path”:”/health”,”port”:8000} |
Kubelet 在服务器上发起 http 请求的配置 |
livenessProbe.httpGet.path |
字符串 |
“/health” |
HTTP 服务器上要访问的路径 |
livenessProbe.httpGet.port |
整数 |
8000 |
容器上要访问的端口的名称或编号,服务器在该端口上监听 |
livenessProbe.initialDelaySeconds |
整数 |
15 |
容器启动后,在启动存活探针之前等待的秒数 |
livenessProbe.periodSeconds |
整数 |
10 |
执行存活探针的频率(秒) |
maxUnavailablePodDisruptionBudget |
字符串 |
“” |
中断预算配置 |
readinessProbe |
对象 |
{“failureThreshold”:3,”httpGet”:{“path”:”/health”,”port”:8000},”initialDelaySeconds”:5,”periodSeconds”:5} |
就绪探针配置 |
readinessProbe.failureThreshold |
整数 |
3 |
探针连续失败多少次后,Kubernetes 认为总体检查失败:容器未就绪 |
readinessProbe.httpGet |
对象 |
{“path”:”/health”,”port”:8000} |
Kubelet 在服务器上发起 http 请求的配置 |
readinessProbe.httpGet.path |
字符串 |
“/health” |
HTTP 服务器上要访问的路径 |
readinessProbe.httpGet.port |
整数 |
8000 |
容器上要访问的端口的名称或编号,服务器在该端口上监听 |
readinessProbe.initialDelaySeconds |
整数 |
5 |
容器启动后,在启动就绪探针之前等待的秒数 |
readinessProbe.periodSeconds |
整数 |
5 |
执行就绪探针的频率(秒) |
replicaCount |
整数 |
1 |
副本数 |
resources |
对象 |
{“limits”:{“cpu”:4,”memory”:”16Gi”,”nvidia.com/gpu”:1},”requests”:{“cpu”:4,”memory”:”16Gi”,”nvidia.com/gpu”:1}} |
资源配置 |
resources.limits.”nvidia.com/gpu” |
整数 |
1 |
使用的 GPU 数量 |
resources.limits.cpu |
整数 |
4 |
CPU 数量 |
resources.limits.memory |
字符串 |
“16Gi” |
CPU 内存配置 |
resources.requests.”nvidia.com/gpu” |
整数 |
1 |
使用的 GPU 数量 |
resources.requests.cpu |
整数 |
4 |
CPU 数量 |
resources.requests.memory |
字符串 |
“16Gi” |
CPU 内存配置 |
secrets |
对象 |
{} |
Secrets 配置 |
serviceName |
字符串 |
服务名称 |
|
servicePort |
整数 |
80 |
服务端口 |
labels.environment |
字符串 |
test |
环境名称 |
labels.release |
字符串 |
test |
发布名称 |