- Shipped
- August 5, 2026 at 12:11 AM UTC
- Author
- Kamo
- Commit
- 00ad3ef
Root cause: the liveness probe was `tcpSocket: port 10000`, but Scylla's REST API binds to api_address 127.0.0.1 (its default) while a tcpSocket probe dials the POD IP. Verified from inside the container — /proc/net/tcp shows :10000 listening only on 0100007F (127.0.0.1), whereas 9042/9180/7000/19042 are on the pod IP; and `curl **************** returns 200 while the same request to the pod IP is refused (curl exit 7), which is exactly what kubelet reported: "Liveness probe failed: dial tcp 10.42.0.47:10000: connect: connection refused". So the probe failed on every attempt and the kubelet killed the container every cycle: initialDelaySeconds 900 + failureThreshold 80 x periodSeconds 30 = 3300s, matching the observed restart period of 55m14s and 920 restarts / 35 days (~one per 54.7 min). Each kill ran the preStop `nodetool drain`, so it exited 0 / "Completed" and looked like a clean shutdown rather than a crash. The earlier 900s/80 values were not cold-start tuning as the comment claimed — they were masking this. They only stretched the kill cycle; the prior 60s/6 values produced a restart every ~4 min (~360/day). Fix: probe the API where it actually listens, via exec against 127.0.0.1, and restore a meaningful threshold (6 x 30s = 3 min). startupProbe already gates liveness until CQL is up, so initialDelaySeconds is unnecessary. Deliberately not setting --api-address 0.0.0.0, which would expose the unauthenticated admin REST API to the pod network.