Tair KVCache虚拟节点vNode使用手册

更新时间:
复制为 MD 格式

Tair KVCache 提供 GPU 虚拟集群(vCluster)和虚拟节点(vNode),可供您自建的 Kubernetes 集群或阿里云 ACK 托管集群纳管。本文介绍如何在 ACK 托管集群中创建和管理 Tair 虚拟节点(vNode),并演示如何将应用 Pod 调度至 vNode,以实现高效的 Pod 调度与容器化应用部署。

产品概述

Tair KVCache 虚拟节点(vNode)是一种基于虚拟化技术的 GPU 资源形态。它将物理 GPU 节点虚拟化为多个独立的 vNode,每个 vNode 作为一个虚拟的 Kubernetes 节点加入到您的 ACK 集群中。您可以在 vNode 上像使用普通节点一样调度和管理 Pod,从而实现 GPU 资源的弹性供给、降本增效和统一管理。

其核心架构如下:

Tair KVCache 虚拟节点架构图

前提条件

在创建 Tair 虚拟节点前,请确保您已完成以下准备工作:

  1. 准备ACK托管集群Pro

    您需要一个 ACK 托管集群Pro版,用于纳管虚拟节点。如果您还没有符合要求的集群,请先创建。

    登录容器服务ACK控制台,单击创建ACK集群。创建时请注意:

    • 版本类型必须为 ACK托管集群Pro

    • 网络插件请选择 Terway 模式

    • 创建集群时无需创建节点池。

    创建完成后,请在集群基本信息页面获取并记录集群ID

    ACK托管集群Pro版创建完成后的截图

  2. 开通Tair虚拟集群(vCluster)

    虚拟节点(vNode)需要归属于一个虚拟集群(vCluster)。

    登录 Tair KVCache 实例控制台,单击创建虚拟集群,根据界面提示完成创建。

    创建虚拟集群的控制台界面

    创建成功后,您可以在列表中看到虚拟集群实例,并记录其虚拟集群实例ID(vkName),后续创建虚拟节点时需要使用。

    虚拟集群创建成功列表

操作步骤

步骤一:创建虚拟节点(vNode)

您可以通过控制台或 OpenAPI 两种方式创建虚拟节点。

方式一:通过控制台创建

  1. Tair KVCache 实例控制台 的虚拟集群列表页面,找到目标虚拟集群,单击操作列的新建虚拟节点

  2. 在 Tair KVCache 购买页面,配置虚拟节点参数。

    新建虚拟节点按钮

    关键参数说明:

    • 虚拟集群:选择已创建的虚拟集群实例ID。

    • 算力单元规格:选择所需的 GPU 规格,例如:kvcache.cu.g4a.8。更多规格参见Tair KVCache实例规格表

    虚拟节点购买页配置项1

    虚拟节点购买页配置项2

  3. 确认配置并完成支付。

方式二:通过OpenAPI创建

您也可以调用 CreateTairKVCacheVNode 接口创建虚拟节点。

请求示例:

{
  "RegionId": "cn-beijing",
  "ZoneId": "cn-beijing-l",
  "InstanceClass": "kvcache.cu.g4b.4",
  "ComputeUnitNum": "1",
  "VkName": "tk-xxxx",
  "ChargeType": "PrePaid",
  "Period": "1"
}

参数说明:

  • VkName:指定虚拟节点所属的虚拟集群实例ID

  • InstanceClass:指定算力单元规格

  • ChargeType:计费方式。取值说明:PrePaid表示包年包月,PostPaid表示按量付费。

步骤二:验证节点纳管

虚拟节点创建成功后,会自动注册到您指定的 ACK 集群中。您可以登录 ACK 控制台进行验证。

  1. 登录容器服务ACK管理控制台,进入集群列表

  2. 单击目标集群名称,在左侧导航栏选择节点管理 > 节点

  3. 在节点列表中,您可以看到新创建的虚拟节点。

    ACK节点页面显示的虚拟节点

  4. (可选)您可以通过 Workbench 连接到集群,执行 kubectl get nodes 命令,进一步确认节点状态。

    集群信息页面,单击通过Workbench管理集群,然后在终端中执行命令。

    kubectl get nodes命令输出

步骤三:调度Pod至虚拟节点

为了确保您的应用 Pod 能够被正确调度到 Tair 虚拟节点上,您需要在 Pod 的 YAML 配置中添加相关配置。

  1. 在 ACK 集群的工作负载 > 容器组页面,单击使用YAML创建资源

  2. 在模板中输入以下内容,并根据您的实际需求修改配置信息,然后单击创建

    # Kubernetes Pod 配置模板
    # 注意:以下注释中标注 [必填] 的字段需要用户根据实际情况修改
    # 标注 [可选] 的字段可根据需求调整,不修改则使用默认值
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: test-qwen  # [必填] Pod名称,需保证在namespace内唯一
      namespace: default  # [可选] 命名空间,默认default,如需隔离可改为自定义namespace
    
    spec:
      containers:
      - command:
        - /bin/sh
        - -c
        - sleep 360000  # [可选] 容器启动命令,当前为保持容器运行,实际部署应替换为服务启动命令
        env:
        - name: HEAD_ADDRESS
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: status.podIP  # [可选] 环境变量配置,当前获取Pod IP,可根据需求添加其他环境变量
        image: mirrors-ssl.aliyuncs.com/lmsysorg/sglang:v0.4.4.post1-cu125  # [必填] 容器镜像地址,需替换为实际使用的镜像
        imagePullPolicy: IfNotPresent  # [可选] 镜像拉取策略,IfNotPresent表示本地存在则不拉取
        name: qwen  # [必填] 容器名称,需保证在Pod内唯一
        ports:
        - containerPort: 8000  # [必填] 容器暴露端口
          protocol: TCP
        resources:
          limits:
            cpu: "20"  # [必填] CPU资源上限,根据需求调整
            memory: "200Gi"  # [必填] 内存资源上限,根据需求调整
            nvidia.com/gpu: "2"  # [必填] GPU资源上限,根据需求调整
          requests:
            cpu: "20"  # [必填] CPU资源请求,通常与limits一致
            memory: "200Gi"  # [必填] 内存资源请求,通常与limits一致
            nvidia.com/gpu: "2"  # [必填] GPU资源请求,通常与limits一致
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
    
      # 以下配置用于虚拟节点调度
      dnsPolicy: ClusterFirst
      enableServiceLinks: true
      nodeSelector:
        alibabacloud.com/virtual-node: "true" 
      preemptionPolicy: PreemptLowerPriority
      priority: 0
      restartPolicy: Always  # [可选] 重启策略,Always表示容器退出后总是重启
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: default
      serviceAccountName: default
      terminationGracePeriodSeconds: 30
      tolerations:
      - effect: NoSchedule
        key: virtual-kubelet.io/provider
        operator: Equal
        value: aliclouddb 
说明

为方便使用大模型的用户,我们提供了预置 SgLang 和 vLLM 环境的容器镜像,详情请参见容器系列镜像列表。您也可以使用自有镜像仓库中的镜像。

后续操作

使用KVCache缓存服务

虚拟节点内的应用如果需要使用 KVCache 缓存服务,目前需要通过技术支持进行开通。控制台自助服务功能待上线,如有需求,请您提交工单联系我们。

相关API

API

描述

CreateTairKVCacheVNode

创建Tair vNode虚拟节点实例