[email protected]Support 24/7 · Billing 09:00 – 00:00LinkedInXFacebook
NexonHost
Netherlands Dedicated ServersAmsterdam · Equinix AM6Germany Dedicated ServersFrankfurt · Equinix FR4Romania Dedicated ServersBucharest · VoxilityAustria Dedicated ServersVienna · Interxion VIEBulgaria Dedicated ServersSofia · TelepointFrance Dedicated ServersParis · Interxion PAR — Marseille · Digital Realty MRS3Ireland Dedicated ServersDublin · Equinix DB2Italy Dedicated ServersMilan · Irideos AvalonPoland Dedicated ServersWarsawSpain Dedicated ServersMadrid · Equinix MD2United States Dedicated ServersAshburn · Equinix DC
← All articles
BlogsOctober 22, 2026

Kubernetes Bare Metal: What the Cloud Did for You, and What You Must Bring

Kubernetes Bare Metal: What the Cloud Did for You, and What You Must Bring

A managed Kubernetes service hides a lot of machinery: the provider runs the control plane, creates load balancers and attaches network disks to your pods. Move a Kubernetes bare metal cluster onto rented dedicated servers and each of those jobs becomes yours. This guide lists what you must bring, what the official docs say each piece needs, and what three servers cost. Whether bare metal beats the cloud on price is worked out in Bare Metal vs Cloud.

What a managed cluster does for you

Take Amazon EKS. It runs at least two API server instances and three etcd instances across three availability zones, replaces a failing control plane instance itself, and upgrades the control plane by rolling in new API servers. A type: LoadBalancer Service gets a cloud load balancer from the cloud-controller-manager; the EBS CSI driver turns a volume claim into a cloud disk.

On your own servers, the right-hand column is your work:

Job Managed cloud On bare metal
Control plane and etcd Run by the provider Three servers you run
type: LoadBalancer Cloud load balancer MetalLB, kube-vip or k3s ServiceLB, plus IPs
Persistent volumes Cloud block storage Local volumes, Longhorn or Rook-Ceph
Node-to-node network The provider's private network Ask the host; encrypt the overlay
Upgrades Control plane rolled for you Control plane, nodes and OS

The control plane: why three servers

Kubernetes keeps all cluster state in etcd, and etcd accepts a write only when a majority of its members, a quorum, agree. From the etcd FAQ:

etcd members Majority needed Failures tolerated
1 1 0
2 2 0
3 2 1
4 3 1
5 3 2

Two members are no safer than one, and four no safer than three. That is why the kubeadm documentation says to run a minimum of three stacked control-plane nodes for high availability, and why k3s requires an odd number of server nodes for embedded etcd. Three servers is the floor for surviving the loss of a machine, and on a small cluster they can run your workloads too: k3s treats agent nodes as optional.

Keep the three in one city: the etcd FAQ warns that, with longer latencies, the default configuration may cause frequent elections or heartbeat timeouts. For geographic redundancy, run a second cluster and replicate, as Multi-Region Dedicated Servers explains. Back etcd up with etcdctl snapshot, and keep the snapshots off the cluster.

Load balancers and ingress

In MetalLB's words, Kubernetes does not offer an implementation of network load balancers for bare-metal clusters, and such Services stay "pending" indefinitely. Three common fixes:

  • k3s ServiceLB ships with k3s and publishes each LoadBalancer Service on the nodes' own addresses through host ports. No extra IPs; you point DNS at the nodes and remove a dead one from DNS yourself.
  • MetalLB hands out addresses from a pool you give it. In layer 2 mode one node answers for each address and takes all its traffic; another takes over if it fails. BGP mode needs a router that speaks BGP.
  • kube-vip provides a virtual IP for the control plane as well as for Services, by ARP or BGP.

MetalLB and kube-vip need spare IPv4 addresses: NexonHost sells up to five extra at €3 each a month, or a /24 for €250 a month plus €100 setup. Layer 2 failover also needs an address that can move between servers. Whether it can at NexonHost, or whether your nodes can announce addresses over BGP, is not documented: ask first. If not, ServiceLB plus DNS is the honest fallback.

Behind the load balancer you still need an HTTP controller; k3s ships Traefik. Ingress NGINX is retired: maintenance ended in March 2026, with no security fixes since, and its repository is archived. The Ingress API is frozen, and Kubernetes recommends Gateway API instead.

Persistent storage

Three options, in rising order of effort:

  • Local persistent volumes. Fast and simple, but the Kubernetes docs are blunt: if the node becomes unhealthy, the volume is inaccessible and the pod cannot run. Fine for databases that replicate themselves; k3s bundles a local-path provisioner of this kind.
  • Longhorn replicates each volume across nodes. Its minimum recommended hardware is 3 nodes with 4 vCPUs and 4 GiB each, and it recommends a dedicated disk, not the root disk, in production. At the default 3 replicas usable capacity is at most a third of raw, and Longhorn keeps 25% of each disk free by default.
  • Rook-Ceph runs Ceph inside the cluster. It needs raw disks with no filesystem, its sample replicated pool needs OSDs on 3 different nodes, and its monitors keep quorum the way etcd does. On-the-wire encryption is off by default.

Replicated storage writes over the network, and Longhorn's best practices ask for 10 Gbps between nodes and a dedicated storage network. Without one, replication shares each server's 1 Gbps port with everything else: at most 125 MB/s (1,000 Mbps ÷ 8).

Networking between the servers

In a managed cloud the nodes share a private network. NexonHost's dedicated pages mention a private VLAN, but it is not in the online configurator, so ask support whether your servers can share one and what it costs. Until you have it in writing, assume node-to-node traffic crosses the public interface, which kubeadm's prerequisites accept.

Public is workable if you encrypt and firewall it. k3s's default flannel backend is VXLAN, and its docs warn that the VXLAN port should not be exposed to the world. Start the servers with --flannel-backend=wireguard-native and pod traffic between nodes is encrypted with WireGuard on UDP 51820. Open TCP 2379–2380 (etcd), TCP 10250 (kubelet), UDP 51820 and, for MetalLB layer 2, TCP and UDP 7946 to the other nodes only, and TCP 6443 (API server) to the nodes and your admin addresses.

Pick a distribution and an upgrade path

Three documented routes, with minimums per control-plane node:

Route Minimum What it includes
k3s 2 cores, 2 GB RAM SQLite or embedded etcd, flannel, Traefik, ServiceLB, local-path storage
kubeadm 2 CPUs, 2 GB RAM Kubernetes; you add networking, load balancing, storage
Talos Linux 2 cores, 2 GiB RAM, 10 GiB disk An immutable OS managed through one API

The smallest NexonHost build, 20 cores and 128 GB, clears them many times over. k3s is the shortest path from an Ubuntu or Debian install, both on the checkout menu. Talos is not on that menu, so ask support how to boot your own image first.

Upgrades are the cost people forget. Kubernetes maintains the three newest minor releases, currently 1.37, 1.36 and 1.35, with about a year of patch support each; 1.34 reaches end of life on 27 October 2026. Those end-of-life dates fall four months apart, and the API server may not skip a minor version, so staying supported means about three control-plane upgrades a year (12 ÷ 4). k3s automates them with system-upgrade-controller, which, its docs warn, will not stop a plan that skips a version. Kernel patches come on top: drain, patch, reboot, next node.

What a three-server cluster costs

Each server includes a 1 Gbps port (listed as unmetered on Xeon, as guaranteed on EPYC), one IPv4 address and 40 Gbps / 4 Mpps of Layer 4 DDoS protection.

A month 3× 2× Xeon E5-2630 v4 3× EPYC 9254
Servers 3 × €129 = €387 3 × €449 = €1,347
Cores / threads / RAM 60 / 120 / 384 GB DDR4 72 / 144 / 384 GB DDR5
Storage disks 6× 1 TB SSD: 3 × €60 = €180 +10× 1 TB NVMe: 3 × €220 = €660
Five extra IPv4 €15 €15
Total €582 €2,022
Delivery Minutes About two weeks

The arithmetic: 3 × 20 = 60 cores, 3 × 24 = 72 cores, 3 × 128 GB = 384 GB. The six-disk option replaces the default 240 GB SSD, so if each Xeon node keeps one for the operating system, five go to storage: 3 × 5 TB = 15 TB raw, or at most 5 TB usable at three replicas. On EPYC the mirrored NVMe pair holds the operating system and the extra drives give 30 TB raw, at most 10 TB usable.

If your stateful data lives outside the cluster, skip the disks: the Xeon cluster is then €387 + €15 = €402 a month. Xeon vs EPYC compares the two processors by workload.

Who should not run Kubernetes on bare metal

  • One small application. A container or two do not need a control plane. A Linux VPS from €9 a month, or one dedicated server running Docker, has far less to break.
  • Teams without on-call. Someone must answer when etcd loses a member at 3 a.m. If nobody will, that is what a managed cluster's price buys.
  • Spiky, short-lived load. Twenty extra nodes for an afternoon is what the cloud is for; a rented server is a monthly commitment.
  • Teams that also want virtual machines. Run Proxmox on each server with the Kubernetes nodes as VMs; Proxmox Dedicated Server covers sizing, and virtualization servers quotes several identical nodes in one facility.

Kubernetes bare metal from NexonHost

For a Kubernetes bare metal cluster, start with bare metal servers for what single tenancy gives you, then pick three identical builds in one city from dedicated servers. Infrastructure as a service shows how servers, IP space and backup storage fit together. Before ordering, ask support two questions in writing: can the servers share a private network, and can an extra IPv4 address move between them? Then start on a one-month term, build it, and switch a node off on purpose.

Prices as of 19 October 2026, in EUR excluding VAT; check the product page.

Sources

Keep reading
Bare Metal vs Cloud: Pricing the Same Server Both Ways
October 13, 2026

Bare Metal vs Cloud: Pricing the Same Server Both Ways

We priced one steady workload both ways in Frankfurt: a 24-core EPYC 9254 dedicated server at €449 a month against the closest AWS m7a instance, with storage, a one-year Savings Plan and internet egress added. The arithmetic is shown, including where the cloud honestly wins.

Read article →
Server Under DDoS Attack? What to Do in the First Hour
October 12, 2026

Server Under DDoS Attack? What to Do in the First Hour

A first-hour runbook for a Linux server under attack: how to rule out a bad deploy or a crawler, the commands that show which layer is failing, what SYN cookies, nftables and rate limits can fix, what only your provider can, and what to ask about null routing.

Read article →
Multi-Region Dedicated Servers: Cities, Latency and Replication
October 11, 2026

Multi-Region Dedicated Servers: Cities, Latency and Replication

A second region turns an outage into a failover and puts capacity near distant users, but the distance between cities sets hard rules for replication. Round-trip floors for ten city pairs, synchronous versus asynchronous, three designs that work, and what two or three regions cost.

Read article →
Get in Touch

Together, Let’s Build a Faster, Safer Internet.

Build scalable infrastructure with NexonHost — high-performance dedicated servers, VPS hosting, cloud hosting, and DDoS protection across Europe.

Get Started →Contact Us
[email protected]Support 24/7 · Billing 09:00 – 00:00