Files
hermes-skills/devops/rke2-cluster-administration/references/rke2-cluster-topology.md
T

4.3 KiB

RKE2 Cluster Topology & Inventory

Cluster Nodes

VMID Name Role IP Specs RKE2 Service
118 rke2-cp-01 control-plane,etcd 10.0.30.51 4c/12GB/40GB rke2-server
130 rke2-cp-02 control-plane,etcd 10.0.30.52 4c/12GB/40GB rke2-server
129 rke2-cp-03 control-plane,etcd 10.0.30.53 4c/12GB/40GB rke2-server
128 rke2-worker-01 worker 10.0.30.61 4c/12GB/80GB rke2-agent
132 rke2-worker-02 worker 10.0.30.62 4c/12GB/80GB rke2-agent
131 rke2-worker-03 worker 10.0.30.63 4c/12GB/80GB rke2-agent
  • RKE2 API VIP: 10.0.30.50 (Keepalived on CP nodes)
  • RKE2 version: v1.35.2+rke2r1
  • Container runtime: containerd 2.1.5-k3s1
  • OS: Debian 12 (bookworm), kernel 6.1.0-44-amd64

Management VM

VMID Name IP Specs
200 mgmt-runner-01 10.0.30.X (DHCP) 4c/4GB/30GB
  • Has kubectl, helm, git, GitHub Actions runner
  • Kubeconfig at /root/.kube/config (must set KUBECONFIG= explicitly)
  • GitHub Actions runner: actions.runner.dsgrafiniert-iac-homelab.mgmt-runner-01
  • OpenTofu state files in /opt/tofu-state/

LoadBalancer IP Assignments

Service Namespace LB IP Ports
Traefik Ingress kube-system 10.0.30.202 80, 443
PostgreSQL RW (CNPG) postgres 10.0.30.200 5432

Cilium LB Pool: 10.0.30.200 - 10.0.30.250 (48 IPs available)

Removed: K8s MariaDB MaxScale (was 10.0.30.201, namespace deleted 2026-07-12). MariaDB Galera runs as native VMs, not in K8s.

Non-K8s services on same subnet (must not overlap with LB pool):

  • 10.0.30.50 = RKE2 API VIP (Keepalived)
  • 10.0.30.70 = MaxScale VIP (Keepalived, standalone Galera VMs)
  • 10.0.30.71-73 = Galera VMs (VM300-302)
  • 10.0.30.99 = Docker host (CT121)
  • 10.0.30.104 = Frigate (CT120)
  • 10.0.30.105 = Gitea (CT108)
  • 10.0.30.10 = Home Assistant (VM106)

Operators & Add-ons

Component Namespace Status
Cilium CNI kube-system Running (eBPF, L2 announcements)
Traefik Ingress kube-system Running (RKE2-bundled)
CoreDNS kube-system Running (RKE2-bundled)
Metrics Server kube-system Running
External Secrets Operator external-secrets Running (1Password backend)
CloudNativePG cnpg-system Running (PostgreSQL operator)
Velero velero Running (S3 backup)
Ceph CSI kube-system Running (RBD storage, external Ceph)
ArgoCD argocd Running (GitOps, App-of-Apps)

Removed (2026-07-12): MariaDB Operator + CRDs — namespace mariadb and mariadb-operator deleted. Galera runs as native VMs.

ArgoCD Applications

App Sync Wave Status Description
root Synced/Healthy Root App-of-Apps
operators 0 Synced/Healthy CNPG, Velero operators
databases 1 Synced/Healthy PostgreSQL cluster
backups 2 Synced/Healthy Velero schedules
memory 3 Unknown/Degraded Qdrant + Ollama + Memory API
cloudnativepg-operator Synced/Healthy CNPG operator
velero-operator Synced/Healthy Velero operator

Removed (2026-07-12): mariadb-operator, mariadb-operator-crds apps — deleted from repo, CRs cleaned up manually, namespaces + CRDs purged.

IaC Repositories (Gitea at 10.0.30.105:3000)

Repo Content
dominik/iac-homelab Main IaC: 7 epics, OpenTofu, Ansible, ArgoCD apps
dominik/observability-iac Observability: Loki, Prometheus/Thanos, Grafana
d.schoen/terraform-proxmox-k8s Older Terraform-Proxmox-K8s work
d.schoen/packer-proxmox VM templates with Packer

PVE Node Map

Node IP Notes
proxmox1 10.0.20.10 Cluster master (API endpoint)
proxmox2 10.0.20.20 Hosts CP-03, Worker-02
proxmox3 10.0.20.30 Hosts CP-02, Worker-03, mgmt-runner
proxmox4 10.0.20.40 Hosts MaxScale VM, Galera VM
proxmox5 10.0.20.50 Hosts CP-01, Worker-01
proxmox6 10.0.20.60 Hosts Gitea, Authelia, Paperless
proxmox7 10.0.20.70 Hosts monitoring, Omada, Ollama
n5pro 10.0.20.91 AMD GPU, Frigate, Seafile, Immich

Note: VM placements change with HA migration. Always discover current placement before operating (scan all nodes with qm list).