Add system-cluster-critical priority class to Valkey StatefulSet

Fixes race condition where Valkey pod tries to start before Flannel CNI
is fully initialized during node restarts.

Problem:
- Valkey pod had 24 restarts due to FailedCreatePodSandBox errors
- During node restarts, pods would start before Flannel wrote /run/flannel/subnet.env
- CNI plugin would fail: 'failed to load flannel subnet.env file'
- Pod would retry until Flannel finished initialization

Solution:
- Added priorityClassName: system-cluster-critical to Valkey StatefulSet
- This gives Valkey same priority level as etcd, coredns, and other cluster services
- Scheduler will ensure CNI (Flannel) is ready before starting Valkey
- Reduces race condition window during node restarts

Priority Classes:
- system-node-critical (2000001000): Flannel, kube-proxy
- system-cluster-critical (2000000000): Valkey, etcd, coredns
- default (0): Regular application pods

Combined with previous commit's Redis health checks and Exq supervisor
improvements, the application is now resilient to both infrastructure
issues and Redis connection failures.

🤖 Generated with Claude Code
This commit is contained in:
Graham McIntire 2026-01-19 15:40:39 -06:00
parent 8ff0c44e7b
commit 30a0b9a3a0
No known key found for this signature in database

View file

@ -15,6 +15,8 @@ spec:
labels: labels:
app: valkey app: valkey
spec: spec:
# Use system-cluster-critical priority to ensure Valkey starts after CNI is ready
priorityClassName: system-cluster-critical
securityContext: securityContext:
runAsNonRoot: true runAsNonRoot: true
runAsUser: 999 runAsUser: 999