k8s(cluster): three voters is the desired state, on the read-path fix image
Two outages in one session came from this file claiming `replicas: 0` while the cluster served traffic: a plain `kubectl apply` scaled it to zero, twice. Source now states production intent. Parking stays an explicit `kubectl scale` divergence recorded in k3s-fleet/cluster-state.yaml, and scripts/restore-fleet.sh remains the guarded path back - its storage, image, and per-node capacity preflights are exactly what a bare apply does not do. Pins server:m12-consumer-readpath-20260818@sha256:9191233d..., the build with the transport-aware read budget and the scatter-degraded counters. Verified after the rolling update: 3/3 Ready, all regions lag 0, every replica answering 3/3 shards with degraded=false on the default budget.
This commit is contained in:
parent
3370394666
commit
d923b036af
@ -21,7 +21,15 @@ metadata:
|
||||
app.kubernetes.io/component: cluster-node
|
||||
spec:
|
||||
serviceName: tidaldb-peers # the headless peer Service — stable per-pod DNS
|
||||
replicas: 0 # parked; scripts/restore-fleet.sh restores three voters explicitly
|
||||
# PRODUCTION as of 2026-08-18: three voters is the desired state, not a value
|
||||
# only the restore script may set. `replicas: 0` lived here while the cluster
|
||||
# was parked and it cost two outages in one session: a plain `kubectl apply` of
|
||||
# this file scaled a LIVE cluster to zero, twice, because the manifest still
|
||||
# claimed parked. Source states intent; parking is an explicit `kubectl scale`
|
||||
# divergence recorded in k3s-fleet/cluster-state.yaml, and
|
||||
# scripts/restore-fleet.sh remains the guarded path back (its storage, image,
|
||||
# and per-node capacity preflights are what a bare apply does not do).
|
||||
replicas: 3
|
||||
# Parallel: bring all pods up at once. There is no ordered-bootstrap
|
||||
# dependency — siblings boot in any order (an unreachable-at-startup peer is
|
||||
# normal; the election + catch-up timer converge them). Ordered start would
|
||||
@ -83,7 +91,7 @@ spec:
|
||||
mountPath: /data
|
||||
containers:
|
||||
- name: tidaldb
|
||||
image: registry.threesix.ai/tidal/server:m12-fleet-remediation-20260813@sha256:2e4baaf974ad2cf650609b1843689122bf4fd2751bcb8749906df8089223f4a3
|
||||
image: registry.threesix.ai/tidal/server:m12-consumer-readpath-20260818@sha256:9191233d012e41fd92bb6d0efea83b60010995a6fc6e3ebc894f3d7c5f72872a
|
||||
imagePullPolicy: IfNotPresent
|
||||
# The image ENTRYPOINT is the bare binary. We override the command with
|
||||
# a tiny /bin/sh wrapper (the bookworm-slim runtime HAS a shell) so we
|
||||
|
||||
Loading…
Reference in New Issue
Block a user