跳到内容

Helm

用于在 Kubernetes 上部署 vLLM 的 Helm chart

Helm 是 Kubernetes 的包管理器。它将帮助您在 k8s 上部署 vLLM 并自动化 vLLM Kubernetes 应用程序的部署。使用 Helm,您可以通过覆盖变量值,将相同的框架架构以不同的配置部署到多个命名空间。

本指南将引导您完成使用 Helm 部署 vLLM 的过程,包括必要的先决条件、Helm 安装步骤以及架构和配置值文件的文档。

先决条件

在开始之前,请确保您具备以下条件

安装 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 组件,包括持久卷,并删除该发布。

架构

配置值

类型 默认值 描述
autoscaling 对象 {"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 环境名称