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
13 lines
540 B
YAML
13 lines
540 B
YAML
apiVersion: kustomize.config.k8s.io/v1beta1
|
|
kind: Kustomization
|
|
namespace: longhorn-system
|
|
resources:
|
|
- longhorn-wffc-storageclass.yaml
|
|
- longhorn-servicemonitor.yaml
|
|
- longhorn-taint-toleration.yaml
|
|
- longhorn-nodes.yaml
|
|
# Longhorn deployed via bootstrap script (cluster-config/longhorn_bootstrap.sh).
|
|
# These manifests configure it post-bootstrap: WFFC StorageClass (default),
|
|
# Prometheus ServiceMonitor, taint toleration for control-plane nodes, and
|
|
# explicit Node CRDs for cp-2/cp-3 (auto-discovery doesn't work with taints).
|