TensorFusion Docs

云厂商集成(BYOC)

配置云厂商集成的 GPU 池,按需管理 GPU 节点

云厂商集成用于 Bring Your Own Cloud 场景:TensorFusion 管理 GPU 池和工作负载调度,底层 GPU 节点仍运行在您自己的云账号、VPC 和 Kubernetes 集群中。

常见接入方式有两种:

方式适用场景TensorFusion 负责
Karpenter 集成集群已使用 Karpenter 管理节点把 GPU 池的扩缩容请求交给已有 Karpenter NodeClass
托管 NodePool希望 TensorFusion 直接按云厂商参数创建 GPU 节点根据云厂商凭据、机型、地域和容量策略创建/回收节点

前提条件

  • 已完成 TensorFusion Helm 安装。
  • 云账号中已有可用的 VPC、子网、安全组和 GPU 实例配额。
  • 新创建的 GPU 节点需要安装 NVIDIA Driver、Container Toolkit,并带有 TensorFusion 可识别的 GPU 标签,例如 nvidia.com/gpu.present=true
  • 如使用 MIG 或固定隔离模式,需要在节点初始化阶段补充对应标签,例如 tensor-fusion.ai/isolationMode=partitioned

方案一:复用 Karpenter

如果您的集群已经使用 Karpenter,推荐复用现有的 EC2NodeClass / NodeClass。TensorFusion 只在 GPU 池中引用它,不直接保存云厂商密钥。

apiVersion: tensor-fusion.ai/v1
kind: TensorFusionCluster
metadata:
  name: tensor-fusion
spec:
  gpuPools:
    - name: shared
      isDefault: true
      specTemplate:
        nodeManagerConfig:
          provisioningMode: Karpenter
          nodeProvisioner:
            karpenterNodeClassRef:
              group: karpenter.k8s.aws
              kind: EC2NodeClass
              name: <your-ec2-node-class>
              version: v1
          nodeCompaction:
            period: 5m

节点初始化脚本中建议显式补充 GPU 标签:

kubectl label node <gpu-node-name> nvidia.com/gpu.present=true

方案二:TensorFusion 托管 NodePool

如果希望 TensorFusion 直接创建和回收 GPU 节点,可配置 computingVendornodeProvisioner。以下示例以 AWS IRSA 为例:

apiVersion: tensor-fusion.ai/v1
kind: TensorFusionCluster
metadata:
  name: tensor-fusion
spec:
  computingVendor:
    enable: true
    type: aws
    name: aws-irsa-connection
    authType: serviceAccountRole
    params:
      defaultRegion: us-east-1
      iamRole: arn:aws:iam::<your-aws-account-id>:role/tensor-fusion
      extraParams:
        keyPairName: ec2-ssh-key-pair
  gpuPools:
    - name: shared
      isDefault: true
      specTemplate:
        nodeManagerConfig:
          provisioningMode: Provisioned
          nodeProvisioner:
            nodeClass: tf-node-class
            gpuNodeLabels:
              nvidia.com/gpu.present: "true"
              tensor-fusion.ai/vendor: nvidia
            gpuNodeAnnotations:
              tensor-fusion.ai/provisioned: "true"
            gpuRequirements:
              - key: karpenter.sh/capacity-type
                operator: In
                values:
                  - on-demand
                  - spot
              - key: node.kubernetes.io/instance-type
                operator: In
                values:
                  - g6.xlarge
                  - g6.12xlarge
              - key: topology.kubernetes.io/region
                operator: In
                values:
                  - us-east-1
              - key: topology.kubernetes.io/zone
                operator: In
                values:
                  - us-east-1b
                  - us-east-1c
                  - us-east-1d
              - key: kubernetes.io/os
                operator: In
                values:
                  - linux
          nodeCompaction:
            period: 5m

如果使用 Access Key 方式,请优先通过 Kubernetes Secret 管理凭据,并避免把明文密钥写入 Git 仓库。Helm Values 中也提供 cloudVendorCredentials,适用于无法使用 IRSA、Workload Identity 或 RAM Role 的环境。

容量策略建议

  • 生产推理服务优先使用 on-demand,批处理和可重试任务可混合 spot
  • gpuRequirements 中限制实例规格、可用区和系统类型,避免创建不符合驱动或网络要求的节点。
  • 为冷启动敏感服务预留 warm capacity;为预算敏感场景配置最大容量,避免异常扩容带来不可控账单。
  • 对 MIG 节点,确认实例型号支持 MIG,节点启动后已开启 MIG,再使用 tensor-fusion.ai/isolationMode=partitioned

验证

应用配置后,检查 GPU 池和节点是否就绪:

kubectl get tensorfusioncluster
kubectl get gpupool
kubectl get gpunode,gpu -o wide
kubectl describe gpupool <gpupool-name>

如果 GPU 节点没有被发现,先检查节点标签:

kubectl get nodes --show-labels | grep nvidia.com/gpu.present=true

更多生产部署配置可参考 生产级高可用集群部署方案

目录