更新时间:2025-07-29 GMT+08:00
分享

基于KubeInfer多机部署推理服务

  1. 配置模型及镜像参数

    编辑vllm_multi_node.yaml文件,按照环境配置修改相关参数。可以按自己的需求修改kubeinfer实例名称、svc名称以及实例数。
    kind: KubeInfer
    apiVersion: infer.modelarts.huaweicloud/v1
    metadata:
      labels:
        app.modelarts.huaweicloud/instanceGroupId: vllm
      namespace: default
      name: infer-vllm             # kubeinfer实例名称
    spec:
      networkServices:
        - name: svc-infer-vllm     # svc名称
          spec:
            ports:
              - nodePort: 30080    # nodePort范围是30000-32767
                port: 8080
                protocol: TCP
                targetPort: 8080
            type: NodePort
      replicas: 1                  # kubeinfer实例数
      strategy:
        rollingUpdate:
          maxSurge: 20%
          maxUnavailable: 20%
        type: InstanceRollingUpdate
    vllm_multi_node.yaml文件中roles参数中有多个相同结构,在双机混部样例中有2个(1个ray head节点,一个ray worker节点),每个结构的内容基本相同但详细配置略有差异,修改时需要关注各个role的配置差异和相关性。建议关注的参数已标红:
    kind: KubeInfer
    apiVersion: infer.modelarts.huaweicloud/v1
    spec:
      template:
        spec:
          roles:
            - recoveryPolicy:
                restart: Instance
                type: Restart
              replicas: 1
              template:
                spec:
                  automountServiceAccountToken: false
                  containers:
                    - env:
                        ……
                      image: ${image_name}                # 需要修改成推理镜像名称
                      imagePullPolicy: IfNotPresent
                      command:                            # 按照实际需求修改启动命令参数,不同角色参数不同
                        - /bin/sh
                        - -c
                        - /mnt/deepseek/scripts/run_vllm_multi_node.sh head
                      name: infer-vllm-head               # pod名称,需要保证各角色不同
                      ……
                      volumeMounts:
                        ……
                        - mountPath: /mnt/deepseek/       # 权重文件及脚本在容器中的位置
                          name: model-path
                  ……
                  volumes:
                    ……
                    - hostPath:
                        path: /mnt/deepseek/              # 权重文件及脚本在节点上的位置
                        type: Directory
                      name: model-path  
    可以配置启动探针(startupProbe)、就绪探针(readinessProbe)、和活跃探针(livenessProbe)来检测每一个实例pod的状态。下面是一个livenessProbe的配置样例,通过health.sh脚本来探测服务状态,容器启动后2400秒进行第一次探测,每10秒探测一次,单次探测超时时间10秒,连续失败6次认为服务异常。
    kind: KubeInfer
    apiVersion: infer.modelarts.huaweicloud/v1
    spec:
      template:
        spec:
          roles:
            - recoveryPolicy:
              ……
              template:
                spec:
                  ……
                  containers:
                    - env:
                      ……
                      livenessProbe:
                        exec:
                          command:                    # 活跃探针的检测命令,按实际需求配置
                            - /bin/sh
                            - -c
                            - /mnt/deepseek/scripts/health.sh
                        initialDelaySeconds: 2400     # 容器启动后,开始探测vllm服务的时长,需要根据sfs_turbo读取速度调整
                        periodSeconds: 10
                        timeoutSeconds: 10
                        failureThreshold: 6
                        successThreshold: 1
                        ……

  2. 部署kubeinfer实例

    在有安装kubectl的节点执行下面的命令部署kubeinfer实例
    kubectl apply -f /mnt/deepseek/vllm_multi_node.yaml

  3. 验证部署结果

相关文档