v1.0.14
What's Changed
Asynchronous Node Stats Collection (#151)
- Added a new NodeStatsSummaryProvider that polls node kubelet metrics in the background on a configurable interval,
rather than blocking during each snapshot cycle. - Designed for large clusters (1000+ nodes), this reduces latency spikes during emission by returning cached data
immediately. - Data staleness is tracked and warns when cached stats are older than 10 minutes.
- Controlled via the new NODE_STATS_BG_COLLECTION_ENABLED environment variable.
Improved Emission Lifecycle Management (#151)
- Snapshotting is now synchronous, which prevents concurrent snapshots from piling up, leaking memory and introducing race conditions.
- Emitters are now executed concurrently, but our export loops waits for all emissions to complete before continuing.
HTTP Transport Resilience (#151)
- Added defensive HTTP transport construction that clones http.DefaultTransport when available, with hardcoded
sensible fallback defaults to protect against future Go stdlib changes. - Defaults: 30s dial timeout, 90s idle connection timeout, HTTP/2 enabled, connection pooling.
Chores
- Go 1.26.0 (#156): Updated Go runtime version in Dockerfile and go.mod.