VultrCluster Custom Resource
A VultrCluster provisions a Vultr Kubernetes Engine (VKE) cluster with dedicated node pools for GPU inference and system workloads. It outputs a Secret containing the cluster kubeconfig. The kubeconfig embeds static client certificates, so consumers need nothing beyond it to reach the cluster. Note that provider-vultr only honors node pool changes at creation time; resize existing pools through VKE’s server-side autoscaler by setting maxNodeCount up front.
#Metadata
#Example
Manifest
apiVersion: infrastructure.modelplane.ai/v1alpha1
kind: VultrCluster
metadata:
name: inference-ewr
namespace: platform
spec:
region: ewr
kubernetesVersion: "v1.36.1+3"
nodePools:
- name: workers
role: System
plan: vc2-6c-16gb
nodeCount: 2
- name: gpu-l40s
role: GPU
plan: vcg-l40s-16c-180g-48vram
nodeCount: 1
maxNodeCount: 8
gpu:
acceleratorType: nvidia-l40s
#Spec
VultrClusterSpec defines the desired state of VultrCluster.
Vultr ProviderConfig or ClusterProviderConfig used to authenticate to the Vultr API. Defaults to the ClusterProviderConfig named default.
VKE cluster Kubernetes version. VKE requires an exact version string including the build suffix; list current versions with vultr-cli kubernetes versions. Defaults to a version where Dynamic Resource Allocation (how GPUs bind to pods) is generally available.
GPU configuration. Required when role is GPU.
GPU accelerator type (e.g. nvidia-l40s, nvidia-a100). Used to label GPU nodes; the actual GPU and count are determined by the plan.
Maximum number of nodes for autoscaling. When set the node pool autoscales between minNodeCount (or nodeCount) and this; VKE autoscaling is server-side, no in-cluster autoscaler is installed. Omit for fixed-size pools.
Minimum number of nodes for autoscaling. Defaults to nodeCount when maxNodeCount is set. Requires maxNodeCount.
Unique name for this node pool. Used as the pool’s label in the VKE cluster.
Number of nodes. Fixed unless maxNodeCount enables autoscaling. VKE pools always run at least one node.
Vultr plan ID for the pool’s nodes (e.g. vcg-l40s-16c-180g-48vram, vc2-6c-16gb). This is the instance type used by other clouds; list plans with vultr-cli plans list.
Determines what workloads this pool runs. System pools host controllers, gateways, and infrastructure. GPU pools host inference workloads and are tainted to exclude non-GPU pods.
Vultr region for the cluster (e.g. ewr, fra). GPU plans and Vultr File System availability vary by region.
#Status
Observed ModelCache RWX storage state, served by the Vultr File System CSI driver VKE installs on every cluster.
Name of the ReadWriteMany StorageClass ModelCache PVCs target on this cluster. VKE ships this class built in; Modelplane composes no storage resources.
Key within the Secret that holds the credential data.
Name of the Secret.
The type of credential this secret contains. Kubeconfig contains a kubeconfig file with the cluster endpoint, CA certificate, and static client certificates.