feat(cluster): card-based cluster type selector for K8s

Replace the GPU Service switch (with the small "cannot be used for
model service" caption) with a two-card radio selector that makes the
choice between Model Service and GPU Service explicit at a glance.

- Render two cards styled to match the existing SwitchCard (same
  border, radius, 12px/14px padding, and label/description typography)
  so the selector blends in with the surrounding form fields.
- Underlying form state is unchanged: picking GPU Service still seeds
  k8s_options.gpuInstanceOptions = {}, picking Model Service clears
  it — so the static-address field, the EDIT-mode change watcher, and
  the API payload all keep working as before.
- Align the GPU Service label with the top-level menu entry
  (menu.gpuService) — drop "Instance" / "实例" from the card title
  and the static access address label.
This commit is contained in:
gitlawr
2026-06-07 13:44:50 +08:00
committed by Lawrence Li
parent 0e4be63b6b
commit ab8e792276
7 changed files with 206 additions and 76 deletions
+7 -4
View File
@@ -185,11 +185,14 @@ export default {
'clusters.namespace.title': 'Namespace',
'clusters.namespace.tip':
'Kubernetes namespace the clusters manifests render into. Leave empty to use gpustack-system.',
'clusters.gpuInstances.title': 'GPU Instance Service',
'clusters.clusterType.title': 'Cluster Type',
'clusters.modelService.title': 'Model Service',
'clusters.modelService.tip':
'For LLM inference and API serving — e.g. exposing model APIs and token-based services.',
'clusters.gpuInstances.title': 'GPU Service',
'clusters.gpuInstances.tip':
'Once enabled, the cluster is dedicated to GPU instance service and cannot be used for model service.',
'clusters.gpuInstances.staticAddress':
'GPU Instance Service Static Access Address',
'For on-demand GPU compute — e.g. interactive development, training jobs, or custom environments.',
'clusters.gpuInstances.staticAddress': 'GPU Service Static Access Address',
'clusters.gpuInstances.staticAddress.tip':
'Static address the operator uses to access GPU instances in this cluster (e.g. a LoadBalancer VIP). Optional.'
};