云厂商集成(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 节点,可配置 computingVendor 和 nodeProvisioner。以下示例以 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更多生产部署配置可参考 生产级高可用集群部署方案。