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
10 lines
425 B
YAML
10 lines
425 B
YAML
# 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"
|