VultrBaremetalCluster Custom Resource
A VultrBaremetalCluster provisions Vultr bare metal servers and installs a k3s cluster onto them. One CPU-only management server runs the k3s server; each GPU pool’s servers join as k3s agents. Vultr bare metal has no autoscaling, so pools are fixed size. It outputs a Secret containing the cluster kubeconfig. The management server is a single point of failure for the cluster control plane. Bare metal provisioning takes tens of minutes.
#Metadata
#Spec
VultrBaremetalClusterSpec defines the desired state of VultrBaremetalCluster.
Vultr ProviderConfig or ClusterProviderConfig used to authenticate to the Vultr API. Defaults to the ClusterProviderConfig named default.
The k3s release installed on the servers.
k3s release channel. Defaults to the first channel where Dynamic Resource Allocation (how GPUs bind to pods) is generally available.
The CPU-only bare metal server that runs the k3s server (the management plane).
Vultr operating system ID installed on the server. Defaults to Ubuntu 24.04 LTS x64; list IDs with vultr-cli os list.
Vultr bare metal plan for the management server. The default is a CPU-only plan available in most regions that offer bare metal.
GPU configuration.
GPU accelerator type (e.g. amd-mi355x). Used to label the pool’s nodes; the actual GPU and count are determined by the plan.
Unique name for this pool.
Number of servers in this pool.
Vultr operating system ID for the pool’s servers. Defaults to the management server’s osId.
Vultr bare metal plan ID for the pool’s servers (e.g. vbm-256c-3072gb-8-mi355x-gpu).
Vultr region for all servers (e.g. ewr, ord). Bare metal plan availability varies by region; check with vultr-cli plans list –type vbm.
SSH key pair used to reach the servers. The public key is registered with Vultr and installed on every server; the private key drives the k3s install over SSH.
Secret holding the SSH key pair, in the same namespace as this VultrBaremetalCluster.
SSH user the servers accept the key for. Vultr installs keys for root by default.
#Status
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 a static client certificate.