Skip to main content

Kubernetes Anycast with Self-Managed k3s

Note: This guide covers self-managed k3s deployed on NetActuate VMs — you install and operate k3s yourself. If you are looking for NetActuate's managed Kubernetes service, where NetActuate manages the control plane and handles upgrades, see Kubernetes.

Deploy a self-managed k3s cluster across NetActuate's global network with Kubernetes service IPs advertised as anycast prefixes via MetalLB and BIRD2 BGP.

What You Will Have

  • k3s cluster spanning multiple NetActuate PoPs
  • MetalLB configured with an anycast IP pool
  • BGP sessions advertising Kubernetes LoadBalancer IPs globally
  • Services reachable via anycast from anywhere on the internet

Architecture

MetalLB runs as a speaker on each worker node and advertises Kubernetes LoadBalancer service IPs to NetActuate's edge routers via BGP — the same mechanism used by all NetActuate anycast deployments. Traffic reaches the nearest healthy node running the service.

Prerequisites

BGP-enabled account, ASN, prefix. kubectl installed on your control node. Same BGP requirements as Anycast Global Deployment.

Playbook Repository

git clone https://github.com/netactuate/netactuate-ansible-k3s
cd netactuate-ansible-k3s

Deployment

Edit group_vars/all and hosts with your server and worker node entries.

ansible-playbook createnode.yaml
ansible-playbook bgp.yaml
ansible-playbook k3s.yaml
ansible-playbook loadbalancer.yaml

Validation

kubectl get nodes

All nodes should show Ready.

kubectl get pods -n metallb-system

MetalLB speaker and controller pods should show Running.

BGP Controller for Existing Clusters

If you already have a k3s or Kubernetes cluster and want to add automated BGP anycast with health-based failover, see the Kubernetes Anycast with BGP Controller guide. The open-source NetActuate BGP Controller works with MetalLB, Calico, Cilium, or BIRD and can be installed on any k3s cluster — including clusters deployed with this playbook.

Need Help?

If you need assistance, visit our support page.