Repolode
kubernetes-sigs

kubernetes-sigs/controller-runtime

用于构建 Kubernetes 控制器与 Operator 的 Go 库,是 Kubebuilder 和 Operator SDK 的底层基础。

Star
2,988
Fork
1,332
未关闭 Issue
69
最近提交
3天前

这是什么?

controller-runtime 是一组用于编写 Kubernetes 控制器的 Go 库。控制器持续监听集群资源,并不断让资源的实际状态与 API 中声明的期望状态保持一致。该库提供这一模式所需的通用基础设施,包括运行控制器的 manager、串联 watch 与 reconcile 循环的 builder,以及读写对象的 client。

它是 Kubebuilder 和 Operator SDK 的底层运行时,这两个工具是创建新 Operator 项目的常用起点。直接用 Go 开发控制器的开发者通常会引入这些包,而不必手写 informer 和工作队列逻辑。版本与 Kubernetes 的次版本号对应,项目提供兼容性表格,列出每个 controller-runtime 版本所配套的 client-go 版本和最低 Go 版本。

核心功能

  • 01manager 用于运行和协调多个控制器
  • 02builder API 用于声明 watch 与 reconcile 逻辑
  • 03带缓存的 client 用于读写 Kubernetes 对象
  • 04支持 webhook 与 leader election
  • 05提供版本与 client-go、Go 版本的兼容性对照

适用场景

  • 用 Go 开发自定义 Kubernetes Operator
  • 编写用于协调自定义资源(CRD)的控制器
  • 在 Kubebuilder 生成的项目中扩展控制器逻辑

快速上手

  1. 1

    从基于此库构建的 Kubebuilder 或 Operator SDK 开始(参见 Kubebuilder 快速入门)

使用前须知

  • 项目保持零主版本号,并允许在次要版本之间引入破坏性变更。
  • 每个次要版本对应特定的 client-go 版本和最低 Go 版本,需要与你的 Kubernetes 依赖保持匹配。

收录于专题

标签

#kubernetes#golang#operator#controller#k8s-api#cloud-native#k8s-sig-api-machinery

常见问题

controller-runtime 是什么?
用于构建 Kubernetes 控制器与 Operator 的 Go 库,是 Kubebuilder 和 Operator SDK 的底层基础。 controller-runtime 是一组用于编写 Kubernetes 控制器的 Go 库。控制器持续监听集群资源,并不断让资源的实际状态与 API 中声明的期望状态保持一致。该库提供这一模式所需的通用基础设施,包括运行控制器的 manager、串联 watch 与 reconcile 循环的 builder,以及读写对象的 client。
controller-runtime 可以免费使用吗?用的什么许可证?
controller-runtime 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
controller-runtime 还在维护吗?
活跃维护中。controller-runtime 最近一次提交是在 2026年11月5日。
controller-runtime 适合用来做什么?
用 Go 开发自定义 Kubernetes Operator 编写用于协调自定义资源(CRD)的控制器 在 Kubebuilder 生成的项目中扩展控制器逻辑
controller-runtime 怎么安装和运行?
从基于此库构建的 Kubebuilder 或 Operator SDK 开始(参见 Kubebuilder 快速入门)
在哪里获取 controller-runtime?
源代码和安装说明在 GitHub 上:https://github.com/kubernetes-sigs/controller-runtime

概要由 AI 根据项目 README 生成;GitHub 数据每日更新。

相关项目