R2-D2
Dashboard
Node Red
Restreaming
The Force
UpdatedNever
v1.0.0

Overview

Loading…
R2-D2
Dashboard
Node Red
Restreaming
The Force
UpdatedNever
v1.0.0
DDroidspeak / Docs
Operator handbook
Droidspeak
What is R2-D2?
Runtime architectureAuth — Keycloak migration plan
FleetRestreamingGalaxy MapThe RepublicTemple ArchivesSTANAG 4817The Force
Tech StackNext.js 15 + React 19Tailwind v4ZustandTanStack Table + DataViewhls.jsLow-latency playerreagraphoglreact-grid-layoutMonacoScalar API Referencefumadocs
Cluster InfraTrailBaseReductStoreRestreamer (datarhei/core)TBMQKeycloakLonghornkube-vipIngress (Caddy + nginx-ingress + Traefik)Netbird
Operator QA Runbook
Install — RKE2Install — Dokploy
Contributor guideRelease Notes
Cluster Infra

kube-vip

LoadBalancer VIP allocation — IP reservations, lease tuning, and the .200 invariant.

kube-vip provides LoadBalancer VIPs for Services in the cluster. It runs as a DaemonSet and uses leader election to decide which node advertises a given VIP.

Where it sits

Chartkube-vip/ in the parent repo
ModeDaemonSet (per-node)
Poolkubevip ConfigMap — range 120-199, 201-220, 10

The .200 reservation

.200 is reserved for the control-plane VIP. Never assign it to a Service. The kubevip ConfigMap range explicitly excludes .200 (120-199,201-220,10); manual assignment must respect the same exclusion.

When checking for LB IP collisions, cross-reference against LB-IPs.md in the parent repo, which tracks every assigned VIP.

Lease tuning (2026-05-08)

The kube-vip DaemonSet env was tuned to shorten failover time:

Env varValue
vip_leaseduration15
vip_renewdeadline10
vip_retryperiod2

Defaults were higher; the tuning was applied to make node failures recover the VIP in seconds instead of tens of seconds. Roll back via kubectl rollout undo if a regression is suspected.

Allocating a new LB IP

  1. Pick an IP from the kubevip ConfigMap range, avoiding .200 and any IP already in LB-IPs.md.
  2. Annotate the Service: kube-vip.io/loadbalancerIPs: <ip>.
  3. Update LB-IPs.md with the assignment.

Operator quick-reference

SymptomFirst check
Service shows <pending> for LoadBalancer IPPool exhausted? Annotation typo? Check kube-vip pod logs
VIP responds intermittentlyLease flapping — check which node currently advertises (kube-vip leader election)
Two services collide on the same VIPBad annotation or no annotation — check LB-IPs.md for the source of truth

See also

  • Ingress — which VIPs the ingress controllers bind to
  • Longhorn — sibling cluster infra

Longhorn

Block storage — PVCs, csi-attacher leader recovery, and Multi-Attach error decoding.

Ingress (Caddy + nginx-ingress + Traefik)

The edge routing model — *.office.ilab.zone via Caddy, port 80 via Traefik, in-cluster via nginx.

On this page

Where it sitsThe .200 reservationLease tuning (2026-05-08)Allocating a new LB IPOperator quick-referenceSee also