TensorFusion Docs

组件更新

滚动更新TensorFusion组件

本页说明如何更新 TensorFusion Operator、AlertManager、Hypervisor、Worker、Client 注入镜像和相关配置。

更新前检查

先确认集群和 GPU 池处于稳定状态:

kubectl get tensorfusionclusters
kubectl get gpupool
kubectl get gpunode,gpu -o wide
kubectl -n tensor-fusion-sys get pod -o wide

如果业务正在运行,请确认业务 Deployment / StatefulSet 已配置合理的副本数、readinessProbe 和 PDB。组件滚动期间不要同时大规模变更业务资源请求,避免把升级问题和调度问题混在一起。

生产集群升级前先保留当前 Helm values 和 TensorFusionCluster 清单。回滚时仅靠 Helm revision 不一定能覆盖手动改过的 GPU 池配置。

更新 Helm Chart

中国大陆网络环境:

helm repo update
helm upgrade --install --create-namespace --namespace tensor-fusion-sys \
  --repo https://download.tensor-fusion.ai \
  -f https://download.tensor-fusion.ai/values-cn.yaml \
  tensor-fusion-sys tensor-fusion

国际网络环境:

helm repo update
helm upgrade --install --create-namespace --namespace tensor-fusion-sys \
  --repo https://download.tensor-fusion.ai \
  tensor-fusion-sys tensor-fusion

纯本地部署且不接入 ClusterAgent 时,需要继续保留 agent.agentId=""

helm upgrade --install --create-namespace --namespace tensor-fusion-sys \
  --repo https://download.tensor-fusion.ai \
  --set agent.agentId="" \
  tensor-fusion-sys tensor-fusion

更新后观察控制面组件:

kubectl -n tensor-fusion-sys rollout status deployment/tensor-fusion-sys-controller-manager
kubectl -n tensor-fusion-sys get pod -l tensor-fusion.ai/component=alert-manager

更新 GPU 池组件

Hypervisor、Worker、Client 的镜像和 Pod 模板在 TensorFusionCluster.spec.gpuPools[].specTemplate.componentConfig 中配置。修改这些配置后,GPUPool Controller 会按 nodePoolRollingUpdatePolicy 滚动更新对应组件。

示例:

apiVersion: tensor-fusion.ai/v1
kind: TensorFusionCluster
metadata:
  name: tensor-fusion
spec:
  gpuPools:
    - name: shared
      specTemplate:
        componentConfig:
          client:
            image: tensorfusion/tensor-fusion-client:latest
            remoteModeImage: tensorfusion/tensor-fusion-client:latest
            embeddedModeImage: tensorfusion/tensor-fusion-client:latest
          hypervisor:
            image: tensorfusion/tensor-fusion-hypervisor:latest
          worker:
            image: tensorfusion/tensor-fusion-worker:latest
        nodeManagerConfig:
          nodePoolRollingUpdatePolicy:
            autoUpdateClient: true
            autoUpdateHypervisor: true
            autoUpdateWorker: true
            batchPercentage: 20
            batchInterval: 1s

常用字段:

字段作用
autoUpdateClientClient 注入镜像或配置变更后自动更新
autoUpdateHypervisorHypervisor 镜像或配置变更后自动更新
autoUpdateWorkerWorker 镜像或配置变更后自动更新
batchPercentage每批更新节点比例,建议 1-100,默认 100
batchInterval批次之间的等待时间,默认 1s

当前滚动更新逻辑实际消费 autoUpdateClient / autoUpdateHypervisor / autoUpdateWorkerbatchPercentagebatchInterval。CRD 中虽然存在 maintenanceWindowmaxDuration 字段,但当前 controller 不依赖它们控制更新窗口;生产维护窗口请通过变更流程、暂停自动更新或分批修改清单来控制。

观察组件更新进度:

kubectl get gpupool tensor-fusion-shared -o jsonpath='{.status.componentStatus}{"\n"}'
kubectl -n tensor-fusion-sys get pod -o wide

componentStatus 中对应组件的 *UpdateProgress 到 100,且 *ConfigSyncedtrue,说明该组件配置已同步完成。

轮换 Secret

许可证、镜像仓库凭据、云厂商凭据等敏感信息应通过 Secret 注入。轮换时建议按以下顺序执行:

  1. 创建新的 Secret,或用 kubectl apply 原地更新 Secret。
  2. 更新引用该 Secret 的 Helm values 或 TensorFusionCluster Pod 模板。
  3. 滚动控制面或 GPU 池组件。
  4. 确认新 Pod 已读取新 Secret,再删除旧 Secret。

许可证 Secret 示例可参考管理许可证

如果 Secret 内容已经更新,但相关 Pod 没有自动重建,可以手动重启控制面 Deployment:

kubectl -n tensor-fusion-sys rollout restart deployment/tensor-fusion-sys-controller-manager
kubectl -n tensor-fusion-sys rollout status deployment/tensor-fusion-sys-controller-manager

对于 Worker / Hypervisor 这类由 TensorFusion 管理的 Pod,优先通过 TensorFusionCluster 模板变更触发滚动更新;只有确认模板已更新但旧 Pod 未滚动时,才删除对应旧 Pod,让控制器重建。

回滚

如果升级后出现异常,先回滚 Helm release:

helm -n tensor-fusion-sys history tensor-fusion-sys
helm -n tensor-fusion-sys rollback tensor-fusion-sys <revision>

如果异常来自 GPU 池组件镜像或模板配置,回滚 TensorFusionCluster 中的 componentConfig,然后观察 GPUPool 更新状态。

验收

kubectl get tensorfusionclusters
kubectl get gpupool
kubectl -n tensor-fusion-sys get pod
kubectl get events -A --sort-by='.lastTimestamp' | tail -n 30

最后运行一个已启用 TensorFusion 注解的测试 Pod,确认业务容器仍能看到预期的虚拟 GPU 资源。

目录