协会地址:上海市长宁区古北路620号图书馆楼309-313室
Kubernetes v1.36:混合版本代理升级到Beta
原文链接: https://kubernetes.io/blog/2026/05/15/kubernetes-1-36-feature-mixed-version-proxy-beta/
回顾 Kubernetes 1.28 版本,我们在之前的博客文章中引入了 Mixed Version Proxy (MVP) 作为 Alpha 功能(位于特性门控 UnknownVersionInteroperabilityProxy 下)。其目标简单但至关重要:通过确保对较旧 API 服务器尚不认识的资源的请求被正确路由到较新的对等 API 服务器,而不是返回错误的 404 Not Found,使集群升级更加安全。
我们很高兴地宣布,Mixed Version Proxy 将在 Kubernetes 1.36 中转为 Beta 版本,并默认启用!自最初发布以来,该功能有了显著发展,解决了关键差距并实现了多项不足并实现了架构现代化。
下面我们来看看该功能是如何演变的,以及您需要了解哪些信息以便在集群中充分利用它。
我们解决什么问题?
在经历升级的高可用控制平面中,您经常会遇到运行不同版本的 API 服务器。这些服务器可能提供不同的 API 集(组、版本、资源)。如果没有 MVP,如果客户端请求落在一个不提供所请求资源(例如,升级中引入的新 API 版本)的 API 服务器上,该服务器会返回 404 Not Found。这在技术上是错误的,因为该资源在集群中存在,只是不在那个特定的服务器上。这可能导致严重的副作用,例如错误的垃圾回收或命名空间删除被阻止。MVP 通过将请求代理到能够提供该资源的对等 API 服务器来解决这个问题。
暂时无法在飞书文档外展示此内容
自 1.28 以来的演变
最初的 Alpha 实现是一个很好的概念验证,但它有一些局限性,并且依赖于较旧的机制。以下是我们在 Beta 版本中如何使其实现现代化:
- 从 StorageVersion API 到聚合发现在 Alpha 版本中,API 服务器依赖
StorageVersion API来确定哪个对等节点提供哪些资源。虽然可行,但这种方法有一个显著的局限性:StorageVersion API还不支持 CRD 和聚合 API。在 Beta 版本中,我们已将依赖StorageVersion API调用替换为使用Aggregated Discovery。API 服务器现在使用聚合发现数据来动态了解其对等节点的能力。 - 缺失的拼图:对等节点聚合发现1.28 博客文章 指出了一个重要的差距:虽然我们可以代理资源请求,但发现请求仅显示本地 API 服务器所了解的内容。在 1.36 中,我们添加了对
Peer-Aggregated Discovery的支持!现在,当客户端执行发现(例如,列出可用的 API)时,API 服务器会将其本地视图与来自所有活跃对等节点的发现数据合并。这为客户端提供了整个集群中所有可用 API 的完整统一视图,无论它们连接到哪个 API 服务器。
暂时无法在飞书文档外展示此内容
虽然对等节点聚合发现将是默认行为(注意,如果设置了 --peer-ca-file 标志,则启用对等节点聚合发现,否则服务器将回退到仅显示其本地 API),但可能存在一些情况,您只需要检查所连接的特定 API 服务器提供的资源。您可以在请求的 Accept 头中包含 profile=nopeer 参数来请求这种非聚合视图(例如,Accept: application/json;g=apidiscovery.k8s.io;v=v2;as=APIGroupDiscoveryList;profile=nopeer)。
所需配置
虽然该特性门控将默认启用,但它需要设置某些标志以允许对等以便在对等 API 服务器之间实现安全通信。要正常运行,请确保您的 API 服务器配置了以下标志:
--feature-gates=UnknownVersionInteroperabilityProxy=true:此功能门在 1.36 版本中将成为默认设置,但建议提前验证。--peer-ca-file=<证书颁发机构路径>:[关键]这是必填标志。您必须提供 CA 证书捆绑包,源 API 服务器将用它来认证目标对等 API 服务器的服务证书。若不设置,代理会因 TLS 验证错误而失败。--peer-advertise-ip和--peer-advertise-port:这两个标志用于设置对等节点用来访问此 API 服务器的网络地址。如果未设置,将使用--advertise-address或--bind-address的值。如果您的网络拓扑复杂,API 服务器需要通过特定的内部接口通信,强烈建议显式设置这些标志。
使用 kubeadm 使用 kubeadm 进行配置
如果您使用 kubeadm 管理集群,可在 ClusterConfiguration 文件中配置这些标志:
apiVersion: kubeadm.k8s.io/v1beta4
kind: ClusterConfiguration
apiServer:
extraArgs:
peer-ca-file: "/etc/kubernetes/pki/ca.crt"
# peer-advertise-ip and port if needed
行动呼吁的标题合适。
最终输出。## 行动呼吁
如果您正在运行多主(multi-master)集群并定期升级它们,那么 Mixed Version Proxy(混合版本代理)是一项重大的安全改进。随着它在 1.36 版本中成为默认设置,我们鼓励您:
- 检查您的 API 服务器标志,确保正确设置了
--peer-ca-file。 - 在准备 1.36 升级时,在您的暂存环境中测试该功能。
- 向 SIG API Machinery(Slack、邮件列表,或通过参加 SIG API Machinery 会议)提供关于您使用体验的反馈。







