搜索你想找的开源项目

输入名称、用途或关键词,也可粘贴 GitHub 仓库链接

分享到微信

当前解读页的微信分享二维码

用微信扫一扫打开,点击右上角「···」分享给朋友或朋友圈。

手机上可截屏后,在微信扫一扫中从相册识别二维码。

kubernetes-sigs/controller-runtime

运维与部署

用于构建 Kubernetes 控制器的 Go 库集合,适合使用 Kubebuilder 或 Operator SDK 开发 Operator 的团队。

2,988
1,333
Go
Apache-2.0
创建于 8 年前

项目介绍

controller-runtime 是一组用于编写 Kubernetes 控制器的 Go 库。它把 informer、工作队列和客户端等细节封装成 manager、controller 和 builder 等抽象,开发者不必自己拼接底层组件。Kubebuilder 和 Operator SDK 都基于它构建,新项目通常先用这两个脚手架生成骨架,再依赖 controller-runtime README。

它主要面向编写 Operator 或自定义控制器、需要持续调和 Kubernetes 资源的团队,也适合需要随 Kubernetes 版本稳定升级客户端层的项目。

快速使用

新控制器建议从 Kubebuilder 快速入门开始,它会生成已接入 controller-runtime 的工程 Kubebuilder 快速入门。直接使用该库时,先添加模块:

go get sigs.k8s.io/controller-runtime

然后按官方示例创建 manager 与 controller,可参考创建 manager、创建 controller和使用 builder 编写基础控制器。仓库的 examples 目录提供了完整程序 示例。运行控制器需要可访问的 Kubernetes 集群及其凭据,manager 会使用标准 kubeconfig 或集群内配置。

版本与兼容性约束

controller-runtime 保持零主版本号。每个 Kubernetes 次版本会对应发布一个次版本,次版本之间允许存在破坏性变更,补丁版本则不做破坏性修改 VERSIONING.md。每个次版本只针对特定的 client-go 次版本测试;与其他 client-go 或 k8s.io/* 次版本混用可能碰巧可用,但不受支持和测试 兼容性表。

最低 Go 版本取自身 Go 依赖中最高的最低版本,通常与对应 k8s.io/* 依赖一致,具体对应关系可查看 go.mod go.mod。例如 v0.26 对应 k8s.io/* v0.38,要求 Go 1.27。

贡献代码时,PR 必须标记为缺陷修复、向后兼容功能或破坏性变更,仓库为每类改动提供了模板 README。

HotRepo 点评

在 2026 年 11 月 5 日的 Go 语言日榜中,该项目记录到 2,984 个 Star、1,333 个 Fork,当日 Star 无变化,位列 Go 榜第 15 名。这组数字反映的是成熟存量而非增长故事:它作为 Kubebuilder 和 Operator SDK 底层运行时,是 Operator 项目依赖它的原因,选用时更应关注 Kubernetes 与 Go 的版本搭配,而不是 Star 走势。

本文由 AI 根据项目 README 生成,更新于 ,以项目官方文档为准。