feat(storage): enable Longhorn on all 3 control-plane nodes for true HA
Changes: - k8s/infrastructure/longhorn/longhorn-taint-toleration.yaml: new Setting to tolerate node-role.kubernetes.io/control-plane:NoSchedule taint, allowing Longhorn DaemonSet to run on cp-2/cp-3 (not just cp-1) - k8s/infrastructure/longhorn/longhorn-nodes.yaml: explicit Node CRDs for talos-cp-2 and talos-cp-3 (auto-discovery doesn't work when nodes have taints; these define /var/lib/longhorn as the storage path) - k8s/infrastructure/longhorn/longhorn-wffc-storageclass.yaml: bump numberOfReplicas from 1→3 (true HA: each volume gets 3 copies across 3 nodes; if one node fails, 2 others still have the data) - k8s/infrastructure/longhorn/kustomization.yaml: add new resources Root cause: Longhorn was only running on talos-cp-1 (.213) because cp-2/cp-3 have the control-plane taint and Longhorn DaemonSet had no matching toleration. Every workload with a PVC was forced to schedule on cp-1 (via nodeSelector or implicit co-location with the storage), defeating the entire purpose of a 3-node HA cluster. With this fix: - Longhorn manager runs on all 3 nodes - Storage is replicated 3x (erasure-coded across nodes) - Pods can schedule on any node without PVC attachment failures - True HA: lose 1 node, cluster still serves all volumes
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
# Longhorn taint-toleration setting - allows Longhorn to run on all control-plane nodes.
|
||||
# Without this, Longhorn DaemonSet only runs on nodes without the control-plane taint,
|
||||
# which in a 3-CP cluster with dedicated cp-2/cp-3 means only cp-1 gets storage.
|
||||
apiVersion: longhorn.io/v1beta2
|
||||
kind: Setting
|
||||
metadata:
|
||||
name: taint-toleration
|
||||
namespace: longhorn-system
|
||||
value: "node-role.kubernetes.io/control-plane:NoSchedule"
|
||||
Reference in New Issue
Block a user