<!-- Generated from the canonical HTML page. Do not edit separately. -->
# Kubernetes on Proxmox VE, Built and Operated | Ankra

Canonical: https://ankra.ai/kubernetes-on-proxmox

Kubernetes on the Proxmox VE hosts you own, in one command. Ankra clones the VMs, installs kubeadm or k3s, spreads them over your hosts and operates the cluster. 30 vCPU free.

Kubernetes on Proxmox VE

# Kubernetes on the Proxmox hosts  you already own.

One command clones the VMs, installs kubeadm, spreads the cluster over your hosts and keeps operating it, with upgrades, node groups and GitOps stacks. Behind a firewall works too. There is no cloud bill.

[Start free](https://platform.ankra.app/auth/signup)  [Proxmox guide](https://docs.ankra.ai/guides/proxmox-clusters)

zsh · ankra cli

```
$ ankra cluster proxmox create --name rack-a --node pve01 \    --placement-nodes pve01,pve02,pve03 --bridge ankra --storage local-lvm \    --credential-id $PVE_CRED --ssh-key-credential-id $SSH_KEY \    --control-plane-count 3 --worker-count 3 --worker-instance-type px-large  Proxmox VE cluster 'rack-a' created successfully!    Cluster ID: 7a2d9e14-3b8c-4f05-a6e1-0d5c8b2f9e63 $ ankra cluster select rack-a  Selected cluster: rack-a is now active.$ ankra cluster operations list -w  Watching executions (every 5s, press Ctrl+C to stop)  bastion, control plane and worker VMs cloned over 3 hosts, Traefik, DNS  All executions have reached a terminal state. Stopping watch. $ ankra cluster kubeconfig add rack-a --use  Added context "ankra-rack-a" to ~/.kube/config$ kubectl get nodes  NAME             STATUS   ROLES           AGE   VERSION  rack-a-cp-1      Ready    control-plane   8m    v1.34.1  rack-a-cp-2      Ready    control-plane   8m    v1.34.1  rack-a-cp-3      Ready    control-plane   8m    v1.34.1  rack-a-worker-1  Ready    <none>          6m    v1.34.1  rack-a-worker-2  Ready    <none>          6m    v1.34.1  rack-a-worker-3  Ready    <none>          6m    v1.34.1
```

Sample session. Commands, flags and output wording are the Ankra CLI's own. Names, IDs, ages and versions are examples.

What one command builds

## From bare hosts  to a spread cluster.

When you save the credential, Ankra fills in what each Proxmox node is missing. Then one command clones and places the VMs.

1. 01  Template  An Ubuntu 24.04 cloud-init template, downloaded and registered on any node without one.
2. 02  Bridge and network  `vmbr0` if no bridge exists, and an `ankra` SDN network, 10.20.0.0/16 with NAT and DHCP.
3. 03  Bastion VM  The SSH jump host, on the primary node.
4. 04  Control plane VMs  kubeadm with Cilium, stacked etcd or dedicated etcd VMs, spread over your hosts.
5. 05  Worker VMs  Sizes from px-small to px-xlarge, balanced per node group and labelled with their host.
6. 06  Ingress, TLS and DNS  Traefik and cert-manager, plus an ankra.cc subdomain. On by default.

Step by step

## From an API token to kubectl get nodes.

The same flow works in the dashboard and the API. These are the CLI steps from the  [Proxmox VE guide](https://docs.ankra.ai/guides/proxmox-clusters) .

 [Prefer to ask? Your AI client can call `create_proxmox_cluster` through the Ankra MCP server.](https://ankra.ai/kubernetes-mcp-server)

1. 1

  ### Prepare each Proxmox node

  Install dnsmasq for the private network's DHCP and leave its own service disabled. The Proxmox API must use HTTPS and be reachable from Ankra, directly or through a jumphost.

  ```
  apt install dnsmasq && systemctl disable --now dnsmasq
  ```
2. 2

  ### Store the Proxmox VE credential

  An API token with VM management privileges. If Ankra should set up storage or networking, it also needs Datastore.Allocate, Sys.Modify and SDN.Use. The CLI prompts for the secret.

  ```
  ankra credentials proxmox create --name my-pve \
    --api-url https://pve.example:8006 --token-id 'root@pam!ankra'
  ```
3. 3

  ### Add an SSH key credential

  A Proxmox cluster takes a single key, your own or one Ankra generates.

  ```
  ankra credentials proxmox ssh-key create --name my-key --generate
  ```
4. 4

  ### See what the credential can use

  Hosts, then storages, bridges and templates per host, and the VM sizes.

  ```
  ankra cluster proxmox hosts --credential-id <id>
  ankra cluster proxmox sizes
  ```
5. 5

  ### Create the cluster

  Pick the node, bridge and storage. `--placement-nodes` spreads over hosts and needs three control planes. Add `--distribution k3s` for k3s.

  ```
  ankra cluster proxmox create --name my-cluster --node pve01 \
    --placement-nodes pve01,pve02,pve03 --bridge ankra --storage local-lvm \
    --credential-id <id> --ssh-key-credential-id <key-id> \
    --control-plane-count 3 --worker-count 3
  ```
6. 6

  ### Watch it come up, then use kubectl

  The cluster turns Online once the Ankra Agent connects. Kubeconfig access goes through Ankra and needs a Cluster Access grant.

  ```
  ankra cluster select my-cluster
  ankra cluster operations list -w
  ankra cluster kubeconfig add my-cluster --use
  kubectl get nodes
  ```

Options

## Defaults that work.  Flags when they don't.

Everything below is a flag on create, a field in the dashboard wizard or a later command.

- ### Spread across hosts

  Each control plane, etcd member and worker lands on the host with the fewest members of its role or group. Every node is labelled with its host, so topology spread works out of the box.
- ### Behind a firewall

  Attach an SSH jumphost to the credential and Ankra reaches the Proxmox API and the VMs through it. Self-signed certificates work with `--tls-insecure`.
- ### kubeadm or k3s

  kubeadm with Cilium is the default. k3s comes with Flannel, Calico or Cilium. `--etcd-topology external` gives dedicated etcd VMs on kubeadm.
- ### Cluster Mesh with UpCloud

  Join Proxmox and  [UpCloud](https://ankra.ai/kubernetes-on-upcloud)  clusters into one Cilium ClusterMesh over an encrypted WireGuard overlay.
- ### Costs for hardware you own

  Proxmox has no list pricing, so Cloud Cost prices each cluster from a rate card on its credential, starting from default rates you can change.
- ### Stacks in Git

  Ingress, cert-manager, monitoring and your apps in versioned Stacks with dependency ordering, committed to a repository you connect.
- ### Upgrades and node groups

  Upgrade, add, scale and resize from the CLI, dashboard or API. VM sizes are listed in the  [Proxmox VE reference](https://docs.ankra.ai/reference/proxmox) .
- ### AI operations

  A failing pod gets an analysis from its logs, events and deploy history, with a drafted fix for you to approve.

Compared

## Hand-built on Proxmox, or built by Ankra.

Two honest ways to get Kubernetes onto hardware you own.

|  | Your own scripts on Proxmox | Proxmox VE + Ankra |
| --- | --- | --- |
| Templates and networking | Built and kept in sync by hand | Created where missing when the credential is saved |
| Distribution | Whatever the scripts install | kubeadm with Cilium, or k3s with Flannel, Calico or Cilium |
| Spread across hosts | Placed by hand | Balanced per role or node group, labelled by host |
| Upgrades and node groups | Your runbook | Upgrade, add, scale and resize from the CLI, dashboard or API |
| Ingress and certificates | Assemble it yourself | Traefik and cert-manager, on by default |
| When it breaks | You, with kubectl | AI analysis with a drafted fix for you to approve |

Know before you build

## Proxmox specifics.

- There is no cloud controller manager, so `LoadBalancer` Services are not provisioned. Expose workloads with the ingress stack, NodePort or a load balancer you deploy yourself.
- Host spread needs at least three control planes, and three or more hosts are recommended. With two hosts, losing the one with the control plane majority still takes the API down.
- Ankra does not enrol VMs in Proxmox HA groups and never live-migrates them after a failure. Resilience comes from Kubernetes replicas spread across hosts.
- The bastion runs on the primary node and is not spread. If that host fails, workloads keep running but Ankra cannot manage the cluster until it returns.
- Node groups grow to larger sizes only. Each VM is powered off, resized and powered on. For smaller VMs, create a new group and delete the old one.

## FAQ

### Can Proxmox run Kubernetes?

Yes. Kubernetes runs on Proxmox VE as virtual machines. Ankra clones those VMs from a cloud-init template, installs kubeadm or k3s, and operates the cluster afterwards, including upgrades and node groups.

### Should I use k3s or kubeadm on Proxmox?

Both are supported. kubeadm is the default, always uses Cilium, offers dedicated etcd VMs and is required for Cluster Mesh. k3s is lighter and lets you pick Flannel, Calico or Cilium as the CNI.

### Do LoadBalancer Services work on Proxmox?

Not out of the box. Proxmox has no cloud controller manager, so Ankra does not provision LoadBalancer Services there. Use the ingress stack, NodePort Services or a load balancer you deploy yourself.

### Does my Proxmox server need to be on the internet?

No. Attach an SSH jumphost to the Proxmox credential and Ankra tunnels the API calls and node SSH through it. The Ankra agent inside the cluster only makes outbound connections.

### What does Ankra cost for a Proxmox cluster?

Ankra bills on worker vCPUs only. Every plan includes 30 worker vCPUs free, control planes are never billed, and a small trial needs no card; adding one unlocks full access and €59 of welcome credit. There is no cloud bill, because the hardware is yours.

## Your first Proxmox cluster  fits in the free allowance.

30 worker vCPUs included, control planes never billed, a small trial without a card. Bring your Proxmox hosts.

[Start free](https://platform.ankra.app/auth/signup)  [Read the Proxmox guide](https://docs.ankra.ai/guides/proxmox-clusters)

Ankra is an independent platform and is not affiliated with or endorsed by Proxmox Server Solutions GmbH. Product details were checked against the Ankra documentation and CLI in October 2026.
