创建与管理节点

更新时间:
复制为 MD 格式

当您需要在PolarDB集群上运行AI/ML推理等计算密集型任务时,通常需要自行采购和维护昂贵的GPU服务器,处理复杂的驱动和环境配置,并解决应用与数据库之间的高速网络连接问题。这不仅增加了运维负担,也难以实现资源的弹性伸缩。PolarDB AI节点(VNode)为您提供了一种Serverless GPU解决方案。它通过Virtual Kubelet技术,将由PolarDB托管的GPU资源以虚拟节点的形式无缝对接到您现有的Kubernetes集群(ACK或自建K8s)。您无需管理任何底层硬件,即可像调度普通Pod一样,将AI应用部署到具备弹性、免运维的GPU资源池中,并享有与PolarDB集群之间的高速、低延迟内网访问能力,实现数据与计算的就近处理。

说明

PolarDB AI节点(VNode)功能目前处于灰度阶段。如需使用该功能或对当前功能有任何疑问,请提交工单联系我们为您处理。

工作原理

PolarDB AI节点(VNode)本质上是Virtual Kubelet技术的一种实现,它在您的Kubernetes集群中注册一个虚拟节点。其工作流程如下:

  1. 虚拟节点注册:创建AI集群后,PolarDB会在您的目标Kubernetes集群中注册一个或多个虚拟节点(VNode)。这些节点在您的集群中可见,但其背后没有实际的物理服务器由您管理。

  2. Pod调度:当您创建一个 Pod,并通过容忍(Toleration)和亲和性(Affinity)或节点选择器(nodeSelector)将其调度到VNode时,Kubernetes API Server会将调度请求传递给VNode。

  3. 资源置备:VNode接收到请求后,PolarDB的后端服务会实时在托管的GPU资源池中置备Pod所需的计算资源(GPU、CPU、内存)。

  4. 网络打通:Pod启动时,会通过弹性网卡(ENI)从您指定的VPC交换机中获取一个IP地址。这使得Pod成为您VPC内的一个原生网络成员,能够直接、高效地访问同一VPC内的PolarDB集群。

适用范围

在开始创建AI节点(VNode)前,请确保您的环境满足以下条件:

  • 支持的Kubernetes集群:

  • 账号与权限:

    • 服务关键角色:需创建PolarDB服务关键角色。

      检查是否已创建PolarDB服务关键角色

      1. 使用阿里云账号(主账号)前往RAM控制台身份管理>角色列表。

      2. 检查角色列表中,是否已存在名为AliyunServiceRoleForPolarDB的服务关联角色,如下:image

        • 若存在,请跳过当前检查步骤。

        • 若不存在,则继续执行以下步骤。

      3. 单击创建角色,在打开的创建角色页面中,单击右上角的创建服务关联角色image

      4. 在打开的创建服务关联角色页面中,选择信任的云服务AliyunServiceRoleForPolarDB,并单击创建服务关联角色以完成创建。image

    • RAM用户权限:若使用RAM用户操作,需确保该用户拥有对目标ACK集群的Admin权限。

    • KubeConfig权限:您提供的KubeConfig文件必须拥有cluster-admin权限,以便PolarDB在您的集群中安装必要的组件。

创建并纳管AI集群

  1. 登录PolarDB控制台,在左侧导航栏单击AI集群列表进入页面,并单击创建AI新集群

  2. 在售卖页中,配置您的AI集群。

    参数

    说明

    付费类型

    仅支持包年包月

    地域

    选择与您的Kubernetes集群或自建K8s所在地域。

    架构

    选择AI节点

    生态

    选择MySQL

    PolarDB集群

    选择您的业务数据所在的PolarDB集群,部署在AI节点上的应用将可以内网访问此集群。

    扩展

    选择

    K8s集群管理方式

    根据您的Kubernetes集群类型,选择自建K8s纳管或K8s纳管

    • 自建K8s纳管:支持阿里云上自建的Kubernetes集群,需提供内网访问的KubeConfig。

    • K8s纳管:支持ACK托管集群Pro网络插件需为Terway)与ACK Edge集群

    ACK集群名称

    选择纳管AI节点的ACK集群。

    说明

    K8s集群管理方式K8s纳管时,支持选择。

    KubeConfig

    请提供内网访问的具有cluster-admin权限的KubeConfig。

    • 自建K8s纳管:请自行在您自建的Kubernetes集群上获取内网访问的KubeConfig。

    • K8s纳管:可在集群信息页面的连接信息页签内,单击获取长期 KubeConfig按钮进行复制。

      说明

      若使用RAM用户操作,需确保该用户拥有对目标ACK集群的Admin权限。

    资源

    请选择GPU规格,并按需选择节点规格与数量。

    网络类型

    固定专业网络

    VPC网络

    默认Kubernetes集群所在VPC网络。

    VPC网络与交换机

    按需进行选择。AI 节点上的Pod将通过弹性网卡(ENI)从您选择的交换机获取IP地址,因此需确保K8s API Server连接端点的访问控制策略已放行所选交换机网段。

    安全组

    Pod挂载的弹性网卡将此关联的安全组,默认选择Kubernetes集群的安全组。

    数据盘

    AI集群分配的云盘总存储配额,您可以在Pod中通过创建PVC来使用此配额。

    高级选项

    (可选)按需为AI节点预设污点 (Taints)和节点标签(Labels)。

  3. 创建完成后,请返回AI集群列表等待新创建的集群状态变为运行中。节点创建过程需要1-5分钟。您可以单击集群ID/名称进入详情页查看基本信息和资源用量。image

AI节点上部署AI应用

创建并纳管AI集群后,您可以将AI应用作为Pod调度到这些虚拟节点上运行。您需要编写一个Kubernetes DeploymentYAML文件,在文件中指定容器镜像、资源请求,并配置正确的调度策略(容忍和节点亲和性),以确保Pod能被正确地调度到AI节点上。

  1. 为您的应用选择合适的容器镜像。

    • 使用预置镜像:PolarDB提供了SgLangvLLM推理引擎容器镜像,支持在阿里云VPC环境内免密拉取。使用时,请将{region-id}替换为您的AI节点所在的地域ID(如cn-shanghai)。

      • vLLM:aliclouddb-pub-registry-vpc.{region-id}.cr.aliyuncs.com/aliclouddb-public/des-ai-nv:25.05-vllm0.8.5.post1-pytorch2.7-cu128-20250513-serverless

      • SgLang:aliclouddb-pub-registry-vpc.{region-id}.cr.aliyuncs.com/aliclouddb-public/des-ai-nv:25.05-sglang0.4.6.post4-pytorch2.6-cu124-20250513-serverless

    • 使用其他镜像:您也可以使用自己的ACR镜像或公网镜像。

      说明

      如果需要从公网拉取镜像,请确保AI节点所在交换机已开启SNAT功能以访问公网。

  2. 编写应用的部署配置,确保Pod能被正确调度到AI节点。将以下YAML内容保存为polar-vnode-demo.yaml

    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: sample-test-deploy-test
      namespace: default
      labels:
        app: sample-test-deploy-test
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: sample-test-deploy-test
      strategy:
        type: RollingUpdate
        rollingUpdate:
          maxSurge: 25%
          maxUnavailable: 25%
      template:
        metadata:
          labels:
            app: sample-test-deploy-test
        spec:
          containers:
            - name: demo
              # 将 {region-id} 替换为您的地域,例如 cn-shanghai
              image: aliclouddb-pub-registry-vpc.{region-id}.cr.aliyuncs.com/aliclouddb-public/des-ai-nv:25.05-vllm0.8.5.post1-pytorch2.7-cu128-20250513-serverless
              imagePullPolicy: IfNotPresent
              # 此处为示例命令,请替换为您应用的实际启动命令
              command: 
                - sleep
                - infinity
              # 声明 Pod 需要的资源,必须小于或等于您购买的单节点规格
              resources:
                limits:
                  nvidia.com/gpu: "2"
                  cpu: "7"
                  memory: "60Gi"
                requests:
                  nvidia.com/gpu: "2"
                  cpu: "7"
                  memory: "60Gi"
              # 挂载共享内存,许多AI框架(如PyTorch)进行多进程通信时需要
              volumeMounts:
                - name: shm
                  mountPath: /dev/shm
          restartPolicy: Always
          terminationGracePeriodSeconds: 30
          # --- 关键调度配置 ---
          tolerations:
            # 添加对 AI 节点固定污点的容忍,允许 Pod 调度上去
            - effect: NoSchedule
              key: virtual-kubelet.io/provider #添加容忍调度到PolarDB Vnode节点
              operator: Equal
              value: aliclouddb
            - effect: NoExecute
              key: node.kubernetes.io/not-ready
              operator: Exists
              tolerationSeconds: 300
            - effect: NoExecute
              key: node.kubernetes.io/unreachable
              operator: Exists
              tolerationSeconds: 300
          volumes:
            # 定义共享内存卷
            - name: shm
              emptyDir:
                medium: Memory
                sizeLimit: 32Gi
  3. 执行以下命令,在Kubernetes集群中创建应用。

    kubectl apply -f polar-vnode-demo.yaml

管理AI节点

您可以在PolarDB控制台中或通过kubectlAI节点进行日常管理,如查看状态、调整数量等。

查看节点状态与信息

说明

AI节点中的Vnode节点带有固定的污点(virtual-kubelet.io/provider=aliclouddb:NoSchedule),此污点不可修改和删除。调度Pod时请添加容忍 (Toleration) 。

  • 通过PolarDB控制台:在AI集群列表页面中找到目标集群,进入详情页。在VNode管理页签内可所有节点。

  • 通过容器服务ACK控制台:在集群列表页面中找到目标集群,在节点管理 > 节点页面,可以查看AI节点信息,并进行自定义标签和污点设置等操作。

  • 通过kubectl:使用kubectl get nodeskubectl describe node <node-name>查看节点的详细信息、标签和污点。

增加AI节点

当现有资源不足时,您可以向AI集群中增加节点。

使用限制

  • 待添加节点的规格需与AI集群中已有节点的规格保持一致。

  • 新添加的AI节点会自动继承当前AI集群已有的标签和污点设置。

操作步骤

  1. AI集群列表页面中找到目标集群,进入详情页。

  2. 基本信息页签内的节点信息区域,单击增加节点

  3. AI节点变配页面中,添加需要新增的节点,并确认。

删除AI节点

警告

删除AI节点将强制删除Vnode上已调度的Pod,请谨慎操作。

  1. AI集群列表页面中找到目标集群,进入详情页。

  2. 基本信息页签内的节点信息区域,单击删除节点

  3. AI节点变配页面中,删除指定节点,并确认。