Skip to content

Kubernetes Service CLI Reference

Reference · Updated Sep 2026

Coming from another cloud?

▸AWS·Amazon EKS Cluster

Amazon EKS Clusterhigh

  • EKS control plane fully AWS-managed, single-tenant, across 3 AZs with auto scale/replace; on Quake AI you run the control plane on Nova instances, provisioned through Magnum or self-managed with OpenTofu, and you operate it.
  • EKS regional API endpoint with SLA; Quake AI exposes the kube API via Neutron LB with floating IP.
  • EKS charges a per-hour cluster platform fee on top of the underlying compute; Quake AI charges only for underlying Nova/Neutron/Cinder resources with no K8s platform fee.
  • EKS managed nodes auto AMI updates, Spot integration; Quake AI self-managed nodes require manual OS image selection and update management.
AWS docs ↗
▸Azure·AKS Cluster

AKS Clusterhigh

  • Azure automatically provisions and manages the control plane at no additional cost (Free tier) or fixed fee (Standard tier with SLA), offloading health monitoring and upgrades; on Quake AI you provision a cluster through Magnum (openstack coe cluster create) or self-managed Kubernetes on Nova instances (OpenTofu plus kubeadm, k3s, or RKE2), and you operate the cluster after creation.
  • No OpenStack integration; uses Azure Resource Manager for cluster lifecycle.
  • Pre-configured with Azure-specific defaults and add-ons like application routing.
  • Managed via Azure Virtual Machine Scale Sets (VMSS) with auto-scaling and upgrades; Quake AI uses Nova instances provisioned via OpenTofu with user-managed scaling and upgrades.
Azure docs ↗
▸DigitalOcean·Kubernetes Cluster

Kubernetes Clusterhigh

  • Uses proprietary DigitalOcean API (POST /v2/kubernetes/clusters) for provisioning; Quake AI users provision Nova instances via OpenTofu and bootstrap Kubernetes manually (kubeadm, k3s).
  • No cluster templates; direct specification of node pools in create request. Quake AI uses OpenTofu modules or IaC patterns to define cluster topology.
  • Fully managed control plane at no cost (HA mode is a paid optional add-on); on Quake AI you provision the control plane through Magnum or self-managed on Nova instances and operate it yourself, including HA configuration.
  • Node pools consist of identical Droplet-based worker nodes managed solely via kubectl (no SSH access); Quake AI nodes are Nova instances with full SSH access via keypair.
DigitalOcean docs ↗
▸Google Cloud·GKE Cluster

GKE Clusterhigh

  • GKE provides Autopilot mode with fully managed node provisioning and scaling by Google; on Quake AI you provision clusters through Magnum or self-managed Kubernetes on Nova instances and manage node scaling yourself.
  • Control plane is fully managed with automatic upgrades through release channels; Quake AI requires user-provisioned and user-managed control plane nodes.
  • Cluster creation uses gcloud CLI vs OpenStack CLI (openstack coe cluster create).
  • Custom machine types, spot VMs, accelerators in node pools; Quake AI K8s nodes use standard Nova flavors.
Google Cloud docs ↗
▸Hetzner·No managed Kubernetes service (self-managed with CCM and CSI)

No managed Kubernetes service (self-managed with CCM and CSI)high

  • Similar self-managed model to Quake AI; both require users to provision servers and install Kubernetes with tools like OpenTofu/Terraform and k3s/kubeadm. Hetzner provides a Cloud Controller Manager and CSI driver, while Quake AI uses OpenStack-compatible storage and network integrations.
  • Hetzner-specific cloud-provider=external CCM must be deployed manually in kube-system namespace.
  • No cluster API or web UI for cluster lifecycle; all via Hetzner Cloud API token and kubectl.
Hetzner docs ↗

Kubernetes service CLI reference

The Kubernetes CLI reference lists commands with Quake AI-specific context.

OpenStack Magnum backs Quake AI Kubernetes. Manage clusters with the openstack coe command group. The OpenStack Magnum CLI reference documents additional subcommands and per-command options.

The commands below create, list, show, update, and delete cluster templates and clusters. They also manage node groups and cluster certificates and retrieve kubeconfig files. Replace the SCREAMING_SNAKE placeholders (CLUSTER, TEMPLATE, IMAGE, KEYPAIR, NETWORK, FLAVOR, and the others below) with your resource IDs or names.

Cluster templates#

List cluster templates#

bash
openstack coe cluster template list

Show cluster template details#

bash
openstack coe cluster template show TEMPLATE

Create a cluster template#

Provide values for --coe, --image, and --external-network. The other options are optional:

bash
openstack coe cluster template create TEMPLATE_NAME \
    --coe kubernetes \
    --image IMAGE \
    --external-network NETWORK \
    [--keypair KEYPAIR] \
    [--flavor FLAVOR] \
    [--master-flavor MASTER_FLAVOR] \
    [--fixed-network FIXED_NETWORK] \
    [--fixed-subnet FIXED_SUBNET] \
    [--network-driver NETWORK_DRIVER] \
    [--volume-driver VOLUME_DRIVER] \
    [--dns-nameserver DNS_NAMESERVER] \
    [--docker-volume-size DOCKER_VOLUME_SIZE] \
    [--docker-storage-driver DOCKER_STORAGE_DRIVER] \
    [--labels KEY1=VALUE1,KEY2=VALUE2] \
    [--server-type SERVER_TYPE] \
    [--registry-enabled] \
    [--insecure-registry INSECURE_REGISTRY] \
    [--tls-disabled] \
    [--public] \
    [--hidden | --visible] \
    [--master-lb-enabled] \
    [--floating-ip-enabled | --floating-ip-disabled] \
    [--tags TAGS]

--tls-disabled, --public, --hidden, --visible, --registry-enabled, --master-lb-enabled, --floating-ip-enabled, and --floating-ip-disabled are boolean flags that take no value.

Update a cluster template#

Apply one or more JSON-patch attribute changes. OPERATION is one of add, replace, or remove, and each change is a path=value pair:

bash
openstack coe cluster template update TEMPLATE OPERATION PATH=VALUE [PATH=VALUE ...]

For example, to replace a label on the template:

bash
openstack coe cluster template update mytemplate replace labels/kube_tag=v1.28.9

Delete a cluster template#

bash
openstack coe cluster template delete TEMPLATE

Quake AI cluster template labels#

Quake AI's public cluster templates carry labels that govern node and load balancer behavior. Set them through --labels at create time, or change them later with cluster template update:

LabelPurpose
kube_tagKubernetes version tag for the cluster
container_runtimeContainer runtime for cluster nodes
boot_volume_sizeBoot volume size, in GB, for cluster nodes
master_lb_floating_ip_enabledWhether the control plane load balancer receives a floating IP

Clusters#

List clusters#

bash
openstack coe cluster list

Show cluster details#

bash
openstack coe cluster show CLUSTER

Create a cluster#

Provide a value for --cluster-template. The other options are optional:

bash
openstack coe cluster create CLUSTER_NAME \
    --cluster-template TEMPLATE \
    [--master-count MASTER_COUNT] \
    [--node-count WORKER_COUNT] \
    [--keypair KEYPAIR] \
    [--flavor FLAVOR] \
    [--master-flavor MASTER_FLAVOR] \
    [--docker-volume-size DOCKER_VOLUME_SIZE] \
    [--labels KEY1=VALUE1,KEY2=VALUE2] \
    [--merge-labels] \
    [--fixed-network FIXED_NETWORK] \
    [--fixed-subnet FIXED_SUBNET] \
    [--floating-ip-enabled | --floating-ip-disabled] \
    [--master-lb-enabled | --master-lb-disabled] \
    [--timeout TIMEOUT] \
    [--discovery-url DISCOVERY_URL]

--merge-labels merges the labels you pass with the labels already set on the cluster template, instead of replacing them.

Delete a cluster#

bash
openstack coe cluster delete CLUSTER

Update a cluster#

Apply one or more JSON-patch attribute changes. OPERATION is one of add, replace, or remove, and each change is a path=value pair:

bash
openstack coe cluster update [--rollback] CLUSTER OPERATION PATH=VALUE [PATH=VALUE ...]

For example, to replace a label:

bash
openstack coe cluster update mycluster replace labels=foo=bar

--rollback is a boolean flag and takes no value. Pass it to have Magnum roll the cluster back if the update fails. Use openstack coe cluster resize to change the worker node count.

Resize a cluster#

Scale the number of worker nodes without changing other cluster properties:

bash
openstack coe cluster resize [--nodegroup NODEGROUP] [--nodes-to-remove SERVER_UUID] CLUSTER NODE_COUNT

Pass --nodegroup to resize a specific node group. Repeat --nodes-to-remove to name the servers to drop when scaling down.

Get cluster kubeconfig#

Retrieve the kubeconfig file for kubectl access:

bash
openstack coe cluster config CLUSTER

This writes a config file to the current directory. Set KUBECONFIG or merge it with your existing config to use it:

bash
export KUBECONFIG=$(pwd)/config
kubectl get nodes

Node groups#

Node groups manage worker pools within a cluster. The default worker pool is itself a node group.

List node groups#

bash
openstack coe nodegroup list CLUSTER

Show node group details#

bash
openstack coe nodegroup show CLUSTER NODEGROUP

Create a node group#

bash
openstack coe nodegroup create CLUSTER NODEGROUP_NAME \
    --node-count NODE_COUNT \
    --flavor FLAVOR

Update a node group#

Apply one or more JSON-patch attribute changes. OPERATION is one of add, replace, or remove:

bash
openstack coe nodegroup update CLUSTER NODEGROUP OPERATION PATH=VALUE [PATH=VALUE ...]

Delete a node group#

bash
openstack coe nodegroup delete CLUSTER NODEGROUP

Cluster certificate authority operations#

Show the cluster certificate authority certificate#

bash
openstack coe ca show CLUSTER

Sign a certificate signing request#

bash
openstack coe ca sign CLUSTER CSR_FILE
  • CSR_FILE: Path to the certificate signing request file.

Rotate cluster certificate authority certificates#

bash
openstack coe ca rotate CLUSTER

Other commands#

Show cluster statistics#

Report cluster statistics for a project. Provide PROJECT to select the project:

bash
openstack coe stats list PROJECT

Show Magnum quotas#

bash
openstack coe quotas list

This runs at admin scope. Project-scoped users receive an HTTP 403 response.

Output columns#

Select specific columns with --column COL1 --column COL2 or change the output format with -f json, -f csv, or -f table (default).

openstack coe cluster list#

ColumnDescription
uuidCluster UUID
nameCluster name
keypairAssociated SSH key pair
node_countNumber of worker nodes
master_countNumber of control plane nodes
statusCluster state (CREATE_COMPLETE, CREATE_IN_PROGRESS, CREATE_FAILED)
health_statusCluster health state

openstack coe cluster template list#

ColumnDescription
uuidTemplate UUID
nameTemplate name
tagsUser-defined tags

Quick answers

Was this page helpful?