Skip to content

Implementation detail: Ordered Bucket fleets

spec.profile: Bucket with spec.bucketWorkload: Ordered creates a StatefulSet with disk-backed emptyDir. It creates no PVCs. celld’s node identity is still the Pod UID. Both Bucket layouts run celld directly with CELLD_DURABILITY=bucket.

Strict placement releases a scheduling gate only after assigning ordinal n to placement.zones[n % azCount]. Required hostname anti-affinity keeps members on distinct nodes. A retained ordinal prefix covers the configured zones; contraction cannot go below the zone count. Relaxed placement keeps the zone allowlist and soft spread preferences.

Contraction lowers replicas by one, removing the highest ordinal, and waits for the StatefulSet to report updated, ready replicas before the next step. Automatic and External contraction also require survivor-capacity evidence for that ordinal. Restart and upgrade use a StatefulSet RollingUpdate, one ordinal at a time. New growth starts fresh Pods and temporary disks. A member Pod still present more than two minutes after its termination grace ended, because its node no longer answers, is force-deleted so the StatefulSet can recreate it (MemberForceDeleted); see self-healing.

The default Bucket layout is Deployment (RollingUpdate, maxUnavailable: 1, maxSurge: 0). It contracts the same way, but Kubernetes chooses the victim, so automatic contraction requires survivor capacity for every member. Layout is immutable; choose Ordered at creation for deterministic zone assignment.

See qualification for actual local and cluster coverage.

Experimental software for evaluation.Capabilities and limitations· Contribute