10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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:0010177

评论

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

使用Python+Opencv从摄像头逐帧读取图片保存在本地

Python 数据读取 摄像头

大数据培训学习包含java技术吗

小谷哥

产品价值“三省”

QualityFocus

小游戏也能脱离微信运行到自己的app中

Onegun

微信小程序 小游戏 小游戏开发 微信小程序-游戏

VOP消息仓库演进之路|如何设计一个亿级企业消息平台

京东科技开发者

软件架构 平台 VOP 客户调用 消息仓库

实践指南|如何在 Jina 中使用 OpenTelemetry 进行应用程序的监控和跟踪

Jina AI

Python 微服务 PyTorch 云技术 OpenTelemetry

嵌入式ARM设计编程(三) 处理器工作模式

timerring

arm

JuiceFS 在火山引擎边缘计算的应用实践

火山引擎边缘云

边缘计算 存储 JuiceFS 火山引擎 渲染

重磅!GitLab 提出五大预测,洞见 2023 年 DevSecOps 发展趋势

极狐GitLab

DevOps 安全 DevSecOps 安全左移 供应链安全

HummerRisk V0.9.1:操作审计增加百度云、增加主机检测规则等

HummerCloud

云安全 云原生安全

前端开发哪家培训机构教的好

小谷哥

业务“兔”飞猛进,只因他们做对了这件事

华为云开发者联盟

数据库 华为云 企业号 2 月 PK 榜 华为云开发者联盟

武汉前端开发培训哪家比较好

小谷哥

恭喜! SelectDB 五位开发者成为 Apache Doris 新晋 PMC 成员和 Committer!

SelectDB

数据湖 Doris 程序猿 ;开源 企业号 2 月 PK 榜

基于Web的6个完美3D图形WebGL库

2D3D前端可视化开发

前端开发 WebGL webgl库 3d图形库 webgl框架

Linux中Sl命令的使用

Linux 操作系统 命令

新春发版,大展宏“兔”:StoneDB-5.7-V1.0.2 版本正式发布!两分钟快速部署安装您的分析加速器~

StoneDB

开源 数据库· StoneDB 企业号 2 月 PK 榜

保险行业需要一个安全的大数据传输

镭速

API+DevOps:华为云API Arts一体化平台,端到端呵护您的API

API

StoneDB 源码解读系列|Tianmu 引擎工具类模块源码详解(一)

StoneDB

数据库 开源 HTAP StoneDB 企业号 2 月 PK 榜

敏捷管理到底有没有捷径可走?

Onegun

开源 将本增效 敏捷迭代

MQTT发布/订阅模式介绍

EMQ映云科技

物联网 IoT mqtt 客户端 企业号 2 月 PK 榜

F5 2022财年安全营收10亿美金 服务应用安全做了哪些事?

F5 Inc

移动应用 安全 应用安全

Python读写txt文本(示例说明)

Python 数据读取 txt

Python读execl之xlrd库函数详解一:工作簿相关

Python Excel 数据读取

「 Java基础-泛型 」一文说清Java泛型中的通配符T、E、K、V、N、?和Object的区别和含义

小刘学编程

Java 源码阅读 Java泛型 构架师

Web、移动端、桌面端自动化测试工具或框架推荐

软件测试 自动化测试 自动化框架

大数据开发培训中心有哪些

小谷哥

西安java培训班哪家好?

小谷哥

通过案例理解MQTT主题与通配符

EMQ映云科技

物联网 IoT mqtt 企业号 2 月 PK 榜 通配符

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