Kubernetes 在 client-go 库中集成功能门控
Kubernetes 在 client-go 库中引入了功能门控(Feature Gates),为开发者和管理员提供了更精细的功能控制。client-go 库广泛用于 Kubernetes 生态系统中,用于构建控制器、工具和 webhook 等扩展。
背景与问题
在引入功能门控之前,Kubernetes 中新功能的管理方式不一致且存在问题。功能可用性和启用方式各不相同,导致碎片化。有些功能依赖于 client-go 版本更新,有些需要手动配置,还有一些使用环境变量。此外,与旧服务器的兼容性通常需要客户端回退,这可能引入潜在问题并需要更新或回滚。缺乏集中机制使得难以选择性地为特定组件启用功能,增加了广泛影响的风险。
功能门控的引入
Kubernetes 组件通过将默认提供程序替换为现有 Kubernetes 功能门控提供程序的代理,来利用这一能力。这有效地将 client-go 功能门控与其他 Kubernetes 功能门控对齐,连接到 --feature-gates 标志、指标和启动日志。替换默认提供程序需要实现 Gates 接口并在包初始化期间调用 ReplaceFeatureGates。
使用场景
对于许多 Kubernetes 程序,默认基于环境变量的功能门控覆盖已经足够,不需要额外的集成。然而,需要不同行为的程序可以用自己的自定义功能门控提供程序替换默认提供程序。开发人员可以替换默认的环境变量覆盖,以更改默认值、从其他来源读取覆盖或完全禁用运行时覆盖。
好处
对于 client-go 的早期采用者,功能门控的好处包括能够以每个进程为基础启用默认关闭的 client-go 功能。这有助于在不构建新二进制文件的情况下禁用行为异常的功能。所有已知的 client-go 功能门控状态都会被记录,允许用户检查。如果发现 client-go 功能中的错误,用户可以在不等待新版本发布的情况下禁用它。
其他新闻
2024 年第三季度,Kubernetes v1.31 发布,AWS 发布了开源 Kubernetes 集群自动扩展工具 Karpenter v1.0,Figma 将其计算平台从 AWS ECS 迁移到 Kubernetes (EKS)。
结论
在 client-go v1.30 中引入功能门控改进了新功能的推出过程。它允许用户和开发者控制他们对新 client-go 功能的采用,并通过提供一致的方法来管理功能发布,简化了 Kubernetes 贡献者的工作。
进一步阅读
有关更多信息,请参阅官方的 功能门控文档。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。