内容简介:添加 Controller Runtime 依赖:①③ 创建 Manager 并启动,Manager 内部维护了 Client、Cache 和 Schema 等;
kubernetes-sigs/controller-runtime 是 kubernetes-sigs/kubebuilder 子项目,构建在 kubernetes/client-go 基础之上,实现 Controller。
准备
添加 Controller Runtime 依赖:
go get sigs.k8s.io/controller-runtime
代码
Controller Manager
import ( "context" "os" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" "sigs.k8s.io/controller-runtime/pkg/builder" "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/config" "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/manager/signals" "sigs.k8s.io/controller-runtime/pkg/reconcile" ) func main() { // ① mgr, err := manager.New(config.GetConfigOrDie(), manager.Options{}) if err != nil { os.Exit(1) } // ② err = builder. ControllerManagedBy(mgr). For(&appsv1.ReplicaSet{}). Owns(&corev1.Pod{}). Complete(&DemoReconcile{}) if err != nil { os.Exit(1) } // ③ if err := mgr.Start(signals.SetupSignalHandler()); err != nil { os.Exit(1) } }
①③ 创建 Manager 并启动,Manager 内部维护了 Client、Cache 和 Schema 等;
② 使用 Builder 模式创建 Controller,并指定 watch 的资源和对应的 Reconcile。
Reconcile
type DemoReconcile struct { client.Client // ① } // ② func (r *DemoReconcile) Reconcile(req reconcile.Request) (reconcile.Result, error) { rs := &appsv1.ReplicaSet{} if err := r.Get(context.TODO(), req.NamespacedName, rs); err != nil { return reconcile.Result{}, err } // TODO 逻辑代码 return reconcile.Result{}, nil } // ③ func (r *DemoReconcile) InjectClient(c client.Client) error { r.Client = c return nil }
①③ 定义 Client 字段,并自动注入;
② Reconcile 方法,内部实现具体的回调逻辑。
参考
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 一文读懂监督学习、无监督学习、半监督学习、强化学习这四种深度学习方式
- 学习:人工智能-机器学习-深度学习概念的区别
- 统计学习,机器学习与深度学习概念的关联与区别
- 混合学习环境下基于学习行为数据的学习预警系统设计与实现
- 学习如何学习
- 深度学习的学习历程
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
写给Web开发人员看的HTML5教程
2012-3 / 45.00元
《写给Web开发人员看的HTML5教程》通过结合大量实际案例和源代码对HTML5的重要特性进行了详细讲解,内容全面丰富,易于理解。全书共分为12章,从HTML5的历史故事讲起,涉及了文档结构和语义、智能表单、视频与音频、画布、SVG与MathML、地理定位、Web存储与离线Web应用程序、WebSockets套接字、WebWorker多线程、微数据以及以拖曳为代表的一些全局属性,涵盖了HTML5所......一起来看看 《写给Web开发人员看的HTML5教程》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
XML、JSON 在线转换
在线XML、JSON转换工具