Kubernetes is the control plane and node runtime beneath many database, stream processing, and batch platforms. Recent master activity is not a headline feature set. It tightens kubelet lifecycle behavior, scheduler rescoring, and the tests that catch failures around stateful workloads.
Kubelet lifecycle work reduces timing ambiguity ¶
Volume teardown is sensitive to operation ordering. A change to the volume manager test now waits for the pending state to clear before it requests a second unmount. The relevant coverage lives in the reconciler test. This is test sequencing, not a new unmount algorithm, but that distinction still matters. A test that races the pending operation can report a failure that production code did not cause, or miss the state transition it was meant to exercise.
Probe workers received a runtime change with more direct operator relevance. The probe worker lifecycle update detaches those workers from the pod sync context. Probe work therefore no longer inherits the lifetime of one transient sync call. For data services with slow startup or termination paths, this removes an unnecessary coupling between health evaluation and pod reconciliation timing.
The two changes address different failure classes. One makes the regression test deterministic. The other changes cancellation ownership in kubelet. Both are worth carrying into soak tests that repeatedly restart pods with persistent volumes.
Scheduler rescoring gets stricter state isolation ¶
The most consequential scheduler item is a correction to the rescore path. It fixes the node set supplied to PreScore, isolates CycleState, and corrects filter error handling. Those are placement correctness concerns, not scoring polish.
Batch schedulers and custom plugins often attach state during one scheduling cycle. If rescore work sees the wrong candidate nodes or shared cycle state, a pod can be evaluated against data from another attempt. Correct filter error handling also keeps a plugin failure distinct from an ordinary node rejection. That distinction affects diagnostics when a queue stalls and every candidate appears unsuitable.
This change is narrower than the recent CompositePodGroup API work. It repairs existing scheduler execution semantics. Teams that test custom scoring plugins should add cases where the candidate set changes between the first score and a rescore, then assert that plugin state does not cross that boundary.
Coverage now stays inside the main Go workspace ¶
The latest commit changes how make test applies Go coverage flags. The coverage fix collects coverage only for the main workspace through the test shell logic. Vendor and staging test invocations no longer receive the shared coverage profile flags.
The reason is concrete. Each go test invocation can overwrite the same profile, while go tool cover cannot resolve packages outside the active workspace. Applying coverage everywhere created a report path that looked comprehensive but could not be processed reliably. The new scope gives up the appearance of one universal report in exchange for a profile the toolchain can resolve.
A separate build tag compile fix restores test compilation under fieldsv1string. This is mostly internal maintenance. It still protects optional build configurations from drifting beyond what normal CI paths compile.
Stateful and network fixtures become more focused ¶
The end to end suite changed its stateful examples. The CockroachDB fixture update repairs the StatefulSet manifest. Another cleanup removes MySQL Galera and ZooKeeper cases from the StatefulSet test file.
That tradeoff is plain. A working CockroachDB example keeps one current distributed database path useful. Removing two older fixtures reduces suite breadth. A green upstream run should not be treated as evidence that the exact Galera or ZooKeeper deployment patterns still work. Platform teams that depend on them need local conformance coverage.
Network regression coverage also moved forward. One commit adds an Endpoint DNAT rule test, and another adds an IPv6 nftables rules test. Both land in the nftables proxier tests. These are test additions rather than proxy behavior changes, but they improve coverage of service paths that database clients use continuously.
What to watch ¶
Repeat volume attach, probe, and termination scenarios under load. The useful signal is whether pending operations drain without canceled probe work.
Exercise custom scheduler plugins through rescore paths. Check candidate node lists, isolated cycle state, and visible filter errors.
Keep private tests for removed stateful fixtures. Upstream coverage now favors a smaller set of examples, so legacy database patterns need an explicit owner.