写点什么

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

评论

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

EMQX在Kubernetes中如何进行优雅升级

EMQ映云科技

运维 物联网 IoT 节点 企业号 1 月 PK 榜

Vue基础知识和案例展示

Geek_7ubdnf

Vue

华为云大数据赋能北港集团发展创新,数字化转型成效显著!

IT科技苏辞

华为云ECS,专为您打造安全、灵活、高效的应用环境

与时俱进的时代

华为云数据库,安全、专业,值得信赖

与时俱进的时代

教你3步完成阿里云物联网平台公共实例到企业实例的迁移——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

一文读懂Go Http Server原理

捉虫大师

Go HTTP 1月月更

企业优秀网络环境,为何离不开华为云CDN全站加速服务?

科技怪授

CDN

本地数据怎么备份上云?华为云对象存储服务OBS帮你实现

科技说

雄关漫道真如铁,而今迈步从头越 | 挥别2022,再战2023!

BoCloud博云

博云

ScrollView(滚动条)

芯动大师

android ScrollView(滚动条) 滚动效果

使用 WebP 图像加速WEB加载

devpoint

Web 前端开发 网站优化 WebP

EfficientFormer 提升速度的同时保持性能,使 ViT 在移动端成为可能

Zilliz

深入思考 Schema 管理的几个基本问题

观远数据

扩展接口SmartInstantiationAwareBeanPostProcessor解析

石臻臻的杂货铺

接口

闲话 dubbogo 社区

阿里巴巴中间件

阿里云 云原生 dubbo

软件测试/测试开发 | Jenkins 多任务关联

测试人

软件测试 持续集成 jenkins 自动化测试 测试开发

华为云大数据解决方案赋能金融行业发展,打造5G智慧银行营业厅

IT科技苏辞

华为云CDN引领网站性能优化,助力企业更好发展

科技怪授

CDN

华为云数字化解决方案激活企业市场空间,为企业稳健发展再加码!

IT科技苏辞

企业如何轻松上云?华为云弹性云服务器ECS给出答案

IT科技苏辞

【深入浅出Seata原理及实战】「入门基础专题」带你透析认识Seata分布式事务服务的原理和流程(1)

洛神灬殇

分布式事务 seata Alibaba SpringCloud Alibaba Seata框架

还在高投入自建物联网平台?教你如何节省三分之二成本——实践类

阿里云AIoT

安全 物联网 物联网安全 技术标签

dcm4che 依赖下载异常

JefferLiu

华为云云原生数据库,激发数据活力

与时俱进的时代

华为云数据库GaussDB(for Redis),如何为人们日常生活保驾护航

科技怪授

数据库

万字技术干货 |YMatrix 高性能时序数据库引擎的技术实践

YMatrix 超融合数据库

性能优化 Clickhouse 时序数据 超融合数据库 YMatrix

今年大促季,阿里云容器服务有哪些技术和应用新突破?

阿里巴巴中间件

阿里云 容器 云原生

拿下中国信通院多项测评的华为云数据库,究竟有多牛?

与时俱进的时代

嗨 Jina,帮我画一幅高山流水图

Jina AI

图像生成 Diffusion

Frp流量隐匿对抗排查

领创集团Advance Intelligence Group

内网渗透 Frp 流量编排

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