Kubernetes 1.36 Mixed Version Proxy
Use the Mixed Version Proxy in Kubernetes 1.36 to handle API version skew during rolling upgrades. Ensures API availability across mixed control plane versions.
π‘ Quick Answer: The Mixed Version Proxy (KEP-4020) progresses in Kubernetes 1.36, enabling API servers at different versions to proxy requests between each other during rolling upgrades. New API resources remain available even when only some API servers have been upgraded.
The Problem
During a rolling upgrade of a multi-API-server HA cluster:
- API server A is upgraded to 1.36 (has new resources)
- API server B is still on 1.35 (doesnβt know about new resources)
- Client requests hitting B for 1.36-only resources fail with 404
- No way to route version-specific requests to the right server
The Solution
The Mixed Version Proxy detects which API server supports which resources and proxies requests accordingly.
How It Works
Client β Load Balancer β API Server B (v1.35)
βββ /api/v1/pods β handles locally β
βββ /apis/scheduling.k8s.io/v1alpha2/podgroups
β proxies to API Server A (v1.36) βEnable Mixed Version Proxy
kube-apiserver \
--feature-gates=UnknownVersionInteroperabilityProxy=true \
--peer-advertise-address=10.0.0.1 \
--peer-advertise-port=6443kubeadm Configuration
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
apiServer:
extraArgs:
- name: feature-gates
value: "UnknownVersionInteroperabilityProxy=true"
- name: peer-advertise-address
value: "$(HOST_IP)"
- name: peer-advertise-port
value: "6443"Verify Peer Discovery
# Check API server peers
kubectl get --raw /apis/apidiscovery.k8s.io/v2 | jq '.items[] | .metadata.name'
# View StorageVersion objects (tracks which API server serves which version)
kubectl get storageversionsCommon Issues
Proxy loop between API servers
- Cause: Both servers think the other should handle the request
- Fix: Ensure
peer-advertise-addressis correctly set on each server
Latency spike during upgrades
- Cause: Proxied requests add an extra hop
- Fix: Expected behavior; completes once all servers are upgraded
Best Practices
- Enable on all API servers β both old and new versions need the feature gate
- Use consistent
peer-advertise-addressβ each server must be reachable by peers - Monitor proxy metrics β track how many requests are being proxied
- Upgrade quickly β mixed version state should be temporary
- Test with canary upgrades β upgrade one API server first and verify proxy works
Key Takeaways
- Mixed Version Proxy progresses in Kubernetes 1.36 (KEP-4020)
- API servers proxy requests for unknown resources to peers that support them
- Ensures zero API downtime during rolling control plane upgrades
- Requires
peer-advertise-addressconfiguration on all API servers - Temporary state β remove version skew by completing the upgrade

Recommended
Kubernetes Recipes β The Complete Book100+ production-ready patterns with detailed explanations, best practices, and copy-paste YAML. Everything in one place.
Get the Book βLearn by Doing
CopyPasteLearn β Hands-on Cloud & DevOps CoursesMaster Kubernetes, Ansible, Terraform, and MLOps with interactive, copy-paste-run lessons. Start free.
Browse Courses βπ Deepen Your Skills β Hands-on Courses
Courses by CopyPasteLearn.com β Learn IT by Doing
