Skip to content

Compose multiple accelerator vendors in the serving stack: Provision Vultr bare metal servers into k3s inference clusters - #434

Draft
haarchri wants to merge 2 commits into
modelplaneai:mainfrom
haarchri:feature/baremetal-amd
Draft

Compose multiple accelerator vendors in the serving stack: Provision Vultr bare metal servers into k3s inference clusters#434
haarchri wants to merge 2 commits into
modelplaneai:mainfrom
haarchri:feature/baremetal-amd

Conversation

@haarchri

@haarchri haarchri commented Sep 8, 2026

Copy link
Copy Markdown
Collaborator

Description of your changes

Design Validation: #432

Vultrs biggest GPUs (8x MI355X) are bare metal plans with no managed Kubernetes in front, and Modelplane could neither provision metal nor install an AMD GPU stack.

A new K3sCluster XR turns machines into a cluster: it installs a k3s server on the control plane machine and joins workers as agents over SSH via provider-k3s, publishing the kubeconfig through the same status.secrets contract as the other cluster XRs. A VultrBaremetalCluster XR provisions the servers on top, one CPU-only management server plus the GPU pools, SSH key registration, and cloud-init opening the k3s ports (Vultrs Ubuntu images firewall everything but SSH) and composes the K3sCluster from their IPs. InferenceCluster gains a VultrBaremetal source; pools are fixed size and only the Standard stack is supported.

The serving stack implements the multi-accelerator design (#432): the VultrBaremetal component list carries both the AMD GPU operator (DRA mode) and the NVIDIA operator + DRA driver, vendor-tagged and filtered by the accelerators the InferenceClasses name. Unsupported class/cloud pairings fail early with UnsupportedDevices conditions.

Validated live on Vultr with CPU-only plans: servers provisioned, k3s v1.34.11 installed over SSH, the worker joined with pool labels and vendor taint, kubeconfig flowed to the serving stack install. The management server is a single k3s server and the data plane rides public IPs

ToDo:

  • add working Model Example with AMD

Fixes #

I have:

  • Read and followed Modelplane's contribution process.
  • Run nix flake check (or ./nix.sh flake check) and made sure it passes.
  • Added or updated tests covering any composition function changes.
  • Signed off every commit with git commit -s.

Tested:

apiVersion: v1
kind: Secret
metadata:
  name: vultr-baremetal-ssh
  namespace: modelplane-system
type: Opaque
stringData:
  ssh-privatekey: |
    -----BEGIN OPENSSH PRIVATE KEY-----
    <-- key -->
    -----END OPENSSH PRIVATE KEY-----
  ssh-publickey: "<-- key -->"
apiVersion: v1
kind: Secret
metadata:
  name: vultr-credentials
  namespace: crossplane-system
type: Opaque
stringData:
  api-key: |
    {
      "api_key": "<-- key -->"
    }
apiVersion: vultr.m.upbound.io/v1beta1
kind: ClusterProviderConfig
metadata:
  name: default
spec:
  credentials:
    source: Secret
    secretRef:
      namespace: crossplane-system
      name: vultr-credentials
      key: api-key
apiVersion: modelplane.ai/v1alpha1
kind: InferenceClass
metadata:
  name: vultr-mi355x-8x
spec:
  description: "Vultr vbm-256c-3072gb-8-mi355x-gpu, 8x AMD Instinct MI355X 288GB"
  provisioning:
    provider: VultrBaremetal
    vultrBaremetal:
      plan: vbm-256c-3072gb-8-mi355x-gpu
      accelerator:
        type: amd-mi355x
        count: 8
  devices:
  - name: gpu
    claim: DRA
    driver: gpu.amd.com
    deviceClassName: gpu.amd.com
    count: 8
    attributes:
      architecture: { string: CDNA4 }
    capacity:
      memory: { value: "288Gi" }
apiVersion: modelplane.ai/v1alpha1
kind: InferenceCluster
metadata:
  name: vultr-baremetal-ord
  labels:
    modelplane.ai/region: ord
spec:
  cluster:
    source: VultrBaremetal
    vultrBaremetal:
      region: ord
      ssh:
        secretRef:
          name: vultr-baremetal-ssh
  nodePools:
    - name: gpu-mi355x
      className: vultr-mi355x-8x
      nodeCount: 1
crossplane resource trace inferencecluster.modelplane.ai/vultr-baremetal-ord
NAME                                                                                             SYNCED   READY   STATUS
InferenceCluster/vultr-baremetal-ord                                                             True     True    Available
├─ ServingStack/vultr-baremetal-ord-serving-stack-3604d (modelplane-system)                      True     True    Available
│  ├─ ProviderConfig/vultr-baremetal-ord-serving-stack-3604d-cluster-7ac80 (modelplane-system)   -        -       
│  ├─ Release/vultr-baremetal-ord-147c393c7f72 (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-277eb1305c0b (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-3a049ed3ed61 (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-4219c64d03f6 (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-6b2852efaa4b (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-7785f819a376 (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-81bfd7dba7ea (modelplane-system)                               True     True    Available
│  ├─ Release/vultr-baremetal-ord-d42938ff5eeb (modelplane-system)                               True     True    Available
│  ├─ Object/vultr-baremetal-ord-0ee8d0d6972d (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-2232080bd0c1 (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-2610650698aa (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-38c87e40f491 (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-64598fe9697c (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-c4dd6a63877d (modelplane-system)                                True     True    Available
│  ├─ Object/vultr-baremetal-ord-cf02caa11f04 (modelplane-system)                                True     True    Available
│  ├─ ProviderConfig/vultr-baremetal-ord-serving-stack-3604d-cluster-7ac80 (modelplane-system)   -        -       
│  ├─ Usage/vultr-baremetal-ord-0198276f1302 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-08f52fac7d0c (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-1d7315c58a37 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-2168167f9217 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-2a21bba13ee6 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-2f7bb573d5f5 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-3574cab7b393 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-35bc54fc773c (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-3943ceaf4ee7 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-3d3fb8c120bf (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-463596f65448 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-66464d96a908 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-7f602a6bae44 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-8aca616a55bb (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-926cd1078cc9 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-93049c5b6496 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-94eb9d8be794 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-d4f3e3743f4e (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-e50c646bd4bd (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-f0a1d5db08a7 (modelplane-system)                                 -        True    Available
│  ├─ Usage/vultr-baremetal-ord-f27bf3eda8ab (modelplane-system)                                 -        True    Available
│  └─ Usage/vultr-baremetal-ord-f7f049bd9d86 (modelplane-system)                                 -        True    Available
├─ VultrBaremetalCluster/vultr-baremetal-ord (modelplane-system)                                 True     True    Available
│  ├─ BareMetalServer/vultr-baremetal-ord-f29d2ec462f2 (modelplane-system)                       True     True    Available
│  ├─ BareMetalServer/vultr-baremetal-ord-f754392b01c1 (modelplane-system)                       True     True    Available
│  ├─ SSHKey/vultr-baremetal-ord-35f01102a6c5 (modelplane-system)                                True     True    Available
│  └─ K3sCluster/vultr-baremetal-ord-02a29e755b96 (modelplane-system)                            True     True    Available
│     ├─ Cluster/vultr-baremetal-ord-02a29e755b96-cluster-03781 (modelplane-system)              True     True    Available
│     ├─ Node/vultr-baremetal-ord-d3c614198d97 (modelplane-system)                               True     True    Available
│     └─ ProviderConfig/vultr-baremetal-ord-02a29e755b96-ssh-e62de (modelplane-system)           -        -       
├─ ClusterProviderConfig/vultr-baremetal-ord-cluster-kubeconfig-8631e                            -        -       
└─ Usage/vultr-baremetal-ord-fddf1e269af0 (modelplane-system)                                    -        True    Available

Signed-off-by: Christopher Haar <christopher.haar@upbound.io>
Signed-off-by: Christopher Haar <christopher.haar@upbound.io>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant