Linkerd 2.20 has shipped, adding rate-limit-aware load balancing and circuit breaking that respond to HTTP 429 and gRPC RESOURCE_EXHAUSTED responses. The control plane's destination controller was refactored, cutting memory usage by up to 85% in some cases, especially on large or high-churn clusters. Inbound proxy metrics now reach near parity with outbound metrics, with new histograms and improved OpenTelemetry semantic convention compliance. The release also raises max supported Kubernetes to 1.35 and Gateway API to 1.5.1, and promotes native sidecar support to stable, making it the default proxy injection method.

5m read timeFrom linkerd.io
Post cover image
Table of contents
Related announcementsRate-limit-aware load balancingControl plane memory improvementsProxy metrics, tracing, and OpenTelemetry improvementsOther fun stuffGetting your hands on Linkerd 2.20Linkerd is for everyonePhoto credit

Questions this post answers

What's new in Linkerd 2.20 for handling rate-limited services?

Linkerd 2.20 extends its load balancing and circuit breaking logic to recognize HTTP 429 and gRPC RESOURCE_EXHAUSTED responses. Instead of treating these as failures, Linkerd can be configured to bias traffic away from overloaded endpoints or remove them entirely from the pool, even when the 429s originate from Linkerd's own rate-limiting feature. Teams tuning service mesh resilience can follow Linkerd release changes like this on daily.dev.

How much does Linkerd 2.20 reduce control plane memory usage?

Linkerd 2.20 refactors the destination controller's internal state management, cutting control plane memory usage by almost 85% in some cases. The destination controller maintains a map of everything on the cluster a meshed pod might talk to, so it typically accounts for most of the control plane's memory, especially in large or fast-moving clusters with heavy pod churn. Operators sizing Kubernetes clusters can track service mesh memory improvements like this via daily.dev.

Are native sidecars the default in Linkerd 2.20?

Yes, Linkerd 2.20 promotes native sidecar support to stable and makes it the default deployment type for proxy injection. Native sidecars were first introduced in Linkerd 2.15 and reached beta in 2.19; they fix long-standing Kubernetes sidecar issues, particularly around Jobs support and container startup race conditions. Anyone migrating Kubernetes sidecar deployments can watch for changes like this through daily.dev.

1 Impression