AI实践哪家强?来 AICon, 解锁技术前沿,探寻产业新机! 了解详情
写点什么

Client-Go 中的特性开关:增强控制并简化 Kubernetes 中的特性采用

作者:Aditya Kulkarni

  • 2024-10-23
    北京
  • 本文字数:1413 字

    阅读完需:约 5 分钟

大小:626.00K时长:03:33
Client-Go中的特性开关:增强控制并简化Kubernetes中的特性采用

Kubernetes 已经将特性开关(Gates)集成到了 client-go 库中,为开发人员和管理员提供了在 Kubernetes 环境中对特性采用的更细粒度的控制。Kubernetes 组件利用 client-go 库进行 API 交互。该库在 Kubernetes 生态系统中也被广泛采用,用于构建控制器、工具和 Webhook 等扩展。

 

红帽公司(Red Hat)的首席软件工程师Ben LuddyLukasz Szaszkiewicz一篇博客文章中详细阐述了这一声明

 

如果没有 client-go 的特性开关,在 Kubernetes 中管理新特性是有问题的,会存在不一致。特性可用性和启用的处理方式不同,会导致方法的零散。有些特性依赖于client-go的版本更新,有些特性需要手动配置,还有一些则需要使用环境变量。

 

此外,与旧服务器端的兼容性通常需要客户端的回退,这会引入潜在的问题,需要更新或回滚。缺乏集中机制使得为特定组件选择性地启用某些特性变得更具挑战性,从而增加了风险的影响范围。

 

对于很多 Kubernetes 程序来说,默认的基于环境变量的特性开关重写覆盖就已经足够了,不需要额外的集成。然而,需要不同行为的程序可以用自己的自定义特性开关提供程序来替换它。

 

Kubernetes 组件本身利用这一能力,通过将默认程序替换为现有 Kubernetes 的特性开关提供程序的楔子。这样,client-go 的特性开关与其他 Kubernetes 的特性开关就对齐了,可以将它们连接到 --feature-gates 标识、度量指标和启动日志中。

 

Replacing the default provider involves implementing the Gates interface and calling ReplaceFeatureGates during package initialization.

 

替换默认提供程序涉及到实现 Gates 接口,并在包初始化期间调用 ReplaceFeatureGates

 

import ( “k8s.io/client-go/features”)

type AlwaysEnabledGates struct{}

func (AlwaysEnabledGates) Enabled(features.Feature) bool { return true}

func init() { features.ReplaceFeatureGates(AlwaysEnabledGates{})}
复制代码

 

在 2024 年第三季度,Kubernetes 发布了Kubernetes v1.31,AWS 发布了Karpenter v1.0,一个开源的Kubernetes集群自动扩展工具。此外,Figma 将其计算平台从 AWS ECS 迁移到 Kubernetes(EKS)。

 

对于 client-go 的早期采用者来说,特性开关的好处包括能够在每个进程的基础上启用默认的关闭的 client-go 特性。这有助于禁用行为异常的特性,而无需构建新的二进制文件。所有已知的 client-go 的特性开关状态都会被记录下来,从而允许用户进行检查。

 

对于使用 client-go 开发软件的人来说,在默认情况下,client-go 的特性开关重写覆盖是从环境变量中读取的。如果在 client-go 的特性中发现了错误,用户能够禁用它,而无需等待新的版本。

 

开发人员可以在程序中替换默认的基于环境变量的重写覆盖来更改默认值,从另一个源读取重写覆盖,或者完全禁用运行时的重写覆盖。Kubernetes 组件使用这种自定义的方式将 client-go 的特性开关与现有的 --feature-gates 命令行标别、特性启用度量指标和日志记录集成在一起。

 

在 client-go v1.30 中引入的特性开关改进了推出新特性的过程。它允许用户和开发人员控制他们对新 client-go 特性的采用,并通过提供一致的方法来管理发布,从而简化了 Kubernetes 贡献者的工作。

 

如需了解更多,请查看官方的Feature Gates文档。

 

作者介绍:

 Aditya Kulkarni 是一名技术专家,他曾与不同的组织合作,共同实现敏捷。作为一名狂热的读者,他总是对关注最新、最伟大的技术感兴趣!

 

原文链接:

https://www.infoq.com/news/2024/09/kubernetes-client-go-ga/

2024-10-23 08:0010112

评论

发布
暂无评论
发现更多内容

原来SqlSession只是个甩手掌柜,Redis有几种数据类型

Java 程序员 后端

只需一篇文章吃透Java多线程技术,那些BAT大厂的Java面试官到底在想些什么

Java 程序员 后端

大数据Flink作业

Clarke

10天用Flutter撸了个高仿携程App,2021年Android面试心得

android 程序员 移动开发

厉害了!尚硅谷mysql中employees表,腾讯T2手把手教你

Java 程序员 后端

只用了几百行代码写的百度搜索引擎,程序员Javaweb源码

Java 程序员 后端

DevOps 时代的高效测试之路

CODING DevOps

DevOps 团队 自动化测试 持续交付

1-3年Android开发工程师面试经验分享,真的太香了

android 程序员 移动开发

华为财经2021春招面试,尚硅谷springboot笔记,最全Java知识总结

Java 程序员 后端

厉害了!java使用教程视频,我的Java春季历程

Java 程序员 后端

12道Android高级面试题:android开发视频百度网盘

android 程序员 移动开发

15分钟的字节跳动视频面试,34岁Android程序员裸辞

android 程序员 移动开发

2020-2021华为Android面试真题,凭借这份Android面试题集

android 程序员 移动开发

1307页阿里Android面试全套真题解析在互联网火了,附赠复习资料

android 移动开发

使用 Spring Boot 进行单元测试

码语者

Java Spring Boot Unit Test

12道Android高级面试题:android项目开发实战入门百度网盘

android 程序员 移动开发

1个月学会Android开发!动脑学院vip

android 程序员 移动开发

2019-2021历年华为跳动Android面试真题解析,面经解析

android 程序员 移动开发

卧薪尝胆70天内推入职阿里,2021Java春招

Java 程序员 后端

反向代理、负载均衡实战,【深度思考

Java 程序员 后端

【免费报名】与阿里云一同探索视频云的新技术与新场景

阿里云CloudImagine

阿里云 音视频 视频编码 视频编解码 视频云

10年阿里开发架构师经验分享:享学课堂架构师vip百度云

android 程序员 移动开发

我有一台服务器,能干啥?

程序员鱼皮

程序员 IT 代码 计算机 java

声纹识别帮你守住钱袋子,聊一聊证券行业里的人工智能

Zilliz

AI 向量检索 Milvus 向量

厉害了,java入门电子书百度网盘下载,Java中高级面试

Java 程序员 后端

只需一篇文章吃透Java多线程技术,内容非常全面

Java 程序员 后端

史上最全的Java面试题集锦,高级Java工程师面试技术

Java 程序员 后端

QCon复盘之《58 集团反爬系统建设之路》

IT蜗壳-Tango

Qcon 10月月更

100%好评,扔物线学堂

android 程序员 移动开发

人力资源管理系统和oa的区别?

优秀

低代码

河北联通全光智慧专线,构筑更智运营新体验

Client-Go中的特性开关:增强控制并简化Kubernetes中的特性采用_云原生_InfoQ精选文章