阅读本节前请了解什么是 openkruise
openkruise doc :openkruise.io/zh/docs/
本文是系列专栏《OpenKruise 代码详解》的综述
仓库结构
kruise
├── apis: 包含 OpenKruise 的 API 定义和类型定义。
├── bin: 包含构建后的可执行文件。
├── cmd: 包含命令行工具的源代码。
├── config: 包含 OpenKruise 的配置文件。
├── docs: 包含项目的文档,如使用指南、API 文档等。
├── hack: 包含用于开发和测试的辅助脚本。
├── pkg: 包含 OpenKruise 的核心代码和功能实现。
│ ├── client: 提供与 Kubernetes API Server 交互的客户端代码。
│ ├── control: 控制器底层代码
│ ├── controller: 控制器逻辑代码
│ ├── daemon: 某些守护进程的实现代码
│ ├── features: 特殊功能
│ ├── util: 工具函数代码
│ └── webhook: 提供 Webhook 相关的代码和功能实现。
├── scripts: 包含用于执行各种脚本的工具。
├── test: 包含测试代码和测试工具。
Workload详解
Init
|- controller.init()
|- main()
|- controller.SetupWithManager(mgr)
|- statefulset.Add(mgr)
|- utildiscovery.DiscoverGVK(controllerKind)
|- r := newReconciler(mgr)
|- add(mgr, r) // add adds a new Controller to mgr with r as the reconcile.Reconciler
|- Watch(asts)
|- Watch(Pod)
|- advancedcronjob.Add(mgr)
|- xxxx.Add(mgr)