3.3 KiB
3.3 KiB
Kubernetes Digest — 2026-04-30
Highlights
kube-proxy: No periodic full syncs in large cluster mode (#138571)
- Author: @aojea
- Impact: High — eliminates periodic traffic disruption on clusters with >1000 endpoints
- Discussion: Dan Winship suggested reducing to 24h; Aojea argued any periodic disruption is unacceptable. Clean elimination won over frequency reduction.
- Scope: iptables mode only (nftables improvement planned)
- Release note: kube-proxy does not perform full-sync operations when operating in large cluster mode (more than 1000 endpoints)
kubeadm: Use localAPIEndpoint for all API calls in init (#138449)
- Author: @neolit123
- Impact: Unblocks CAPI infra providers (CAPA, CAPG) that provision LB after kube-apiserver starts
- Discussion: Multiple rounds of E2E testing caught subtle bugs — first iteration broke
kubeadm joinafter node replacement because bootstrap token config was rewritten with local endpoint - Pattern: Init ordering dependencies in distributed bootstrapping are only catchable with full provider E2E, not unit tests
client-go reflector: Object count in trace (#138576)
- Author: @p0lyn0mial
- Impact: Better debugging of slow list operations — count shown inline with timing
- Before: Two trace lines needed correlation
- After: Single "Objects listed" step shows count + duration
Declarative Validation: +k8s:update list/map support (#138472)
- Author: @aaron-prindle
- Impact: DV framework extends to compound types with NoAddItem/NoRemoveItem payloads
- Significance: Next step toward DV as standard validation for all API types
Regression Fixes
kubelet ZFS cadvisor plugin (#138587)
- Author: @BenTheElder
- Fix: Re-introduced accidentally dropped cadvisor ZFS support
- Release note: Fixed kubelet failure starting on ZFS due to missing cadvisor plugin
kubectl column alignment (#138550)
- Author: @rawkode
- Fix: Pre-scan computes max cell widths before first tabwriter flush
- Cause: Periodic flush (from #138023) misaligned when wide cells appeared after row 100
- Preserves: Memory/CPU wins (135 allocs/op, O(1) memory across 500k rows)
Cleanup & GA Progress
| PR | What | Why |
|---|---|---|
| #138583 | Drop StructuredAuthenticationConfiguration gate | GA since 1.34, removed for 1.37 |
| #138669 | DRA DeviceTaintRule CRUD E2E | Required for DRA GA conformance |
| #138451 | StatefulSet reconcile skip metrics registration | Metrics were silently unregistered |
| #138626 | Remove unused kubectl help command | Dead code since Cobra built-in |
| #138708 | Scheduler queue hints cleanup | Gate locked since 1.34 |
Dependencies
- CoreDNS → v1.14.3 (#138536)
- cri-tools → v1.36.0 (#138613)
Patterns to Extract
- Elimination over reduction: When periodic operations are disruptive, eliminate them entirely rather than reducing frequency. "Once a day" is still a disruption window someone will hit.
- Provider E2E catches init ordering: Unit tests can't catch distributed bootstrapping races. Full CAPI provider E2E suites are the only reliable way to validate init-phase changes.
- Trace observability wins: Adding context (counts, keys) to existing trace points costs nothing but saves debugging hours. The reflector already had the count — it just wasn't printing it at the right time.