当前位置: 首页 > news >正文

电脑软件下载官方网站还有多少用.net做网站的

电脑软件下载官方网站,还有多少用.net做网站的,线上销售有哪些渠道,wordpress任意文件删除漏洞背景 这半年一直做k8s相关的工作#xff0c;一直接触client-go controller-runtime kubebuilder#xff0c;但是很少有文章将这三个的区别说明白#xff0c;直接用框架是简单#xff0c;但是出了问题就是黑盒#xff0c;这不符合我的理念#xff0c;所以这篇文章从头说起…背景 这半年一直做k8s相关的工作一直接触client-go controller-runtime kubebuilder但是很少有文章将这三个的区别说明白直接用框架是简单但是出了问题就是黑盒这不符合我的理念所以这篇文章从头说起 。 sample-controller 官方的sample-controller就是最简单controller这个项目就用了client-go来实现controller 这是一张在网上被玩烂的图特别的好分为上下两部分上面就是client-go的informer机制informer机制网上一大堆我就不说了一句话总结所谓的 Informer就是一个自带缓存和索引机制可以触发 Handler 的客户端库下面就是实现controller的思路。我主要说下半部分6调度event handler就是调用AddFunction、UpdateFunction、DeleteFunction这几个方法做了什么事呢7就是将对象的key放到了workqueue工作队列中8就是不断的从工作队列读取key9就是根据key从indexer中取对象然后做处理。所以说如果自己写controller就要去实现下半部分。 controller-runtime controller-runtime我的理解就是方便用户去写custom controller的让用户的关注点只关心写处理逻辑也就是reconciler在看一下之前的那一张图678都是固定的套路只有handle object这一步才是处理逻辑所以controller干的事就是帮用户处理了678。congtroller中引入了几个新的概念 Manager需要管理器来创建和启动控制器可以有多个控制器与管理器关联sample-controller中需要自己controller : NewController和controller.Run现在manager帮你干了你只需要写run里面的东西 Reconciler用户需要关心的地方也就上图handle object那部分。上图9部分 Cache之前你的代码需要操作informer现在不需要了直接操作cache就可以前面我也说过Informer就是一个自带缓存和索引机制可以触发 Handler 的客户端库 Controller 一方面向 Informer 注册 eventHandler另一方面从队列中获取数据。controller 将从队列中获取数据并执行用户自定义的 Reconciler 功能。上图678部分 我把上图用大白话说一下controller向informer注册event handlerAddFunction、UpdateFunction、DeleteFunction这些handler就是将对象的key写到工作队列中cache负责把informer启动起来让informer list、watch k8s当有对象发生变化了informer调用之前注册进来的event handler将对象的key放到work queue工作队列中controller不断的从work queue工作队列中获取对象的key然后调用用户自己写的Reconciler程序。Reconciler的逻辑就是拿着key从cache中获取到对象然后将对象协调成期望的状态。 上面这张图总结了哪部分是client-go哪部分是controller-runtime哪部分是需要用户自己写代码的地方可以看出来只需要关心绿色的部分其实也就是之前handle object那部分剩下的controller-runtime都帮你干了看着图细想一下首先是manager的client和cache你写的哪个控制器都是在和k8s的api进行交互所以一个是和k8s连接的客户端一个是k8s对象的缓存数据controller 负责注册event handler并且从workqueue中读取对象最后负责调用用户自己写的reconciler。 kubebuilder kubebuilder是对controller的进一层封装我们用代码说话 下面是controller-runtime的main func main() {mgr, err : ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{})// in a real controller, wed create a new scheme for thiserr api.AddToScheme(mgr.GetScheme())if err ! nil {setupLog.Error(err, unable to add scheme)os.Exit(1)}err ctrl.NewControllerManagedBy(mgr).For(api.ChaosPod{}).Owns(corev1.Pod{}).Complete(reconciler{Client: mgr.GetClient(),scheme: mgr.GetScheme(),})if err : mgr.Start(ctrl.SetupSignalHandler()); err ! nil {setupLog.Error(err, problem running manager)os.Exit(1)} } 下面是kubebuilder的main func main() {mgr, err : ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{Scheme: scheme,})if err (controller.abcReconciler{Client: mgr.GetClient(),Scheme: mgr.GetScheme(),}).SetupWithManager(mgr); err ! nil {setupLog.Error(err, unable to create controller, controller, abcCluster)os.Exit(1)}setupLog.Info(starting manager)if err : mgr.Start(ctrl.SetupSignalHandler()); err ! nil {setupLog.Error(err, problem running manager)os.Exit(1)} }有没有感觉非常的像貌似多了一个SetupWithManager点进去看一下 func (r *abcReconciler) SetupWithManager(mgr ctrl.Manager) error {return ctrl.NewControllerManagedBy(mgr).For(infrastructurev1alpha1.Abc{}).Complete(r) }仔细对比一下是不是发现就是controller runtime里面的NewControllerManagedBy我没有再仔细看下去但是我觉得就是又对controller封装了一下提供给了开发者更简单的使用方式。 总结 具体的可以边用边看但是思路一定要理清不然上来就用kubebuilder出了问题真的不知道发生了什么。
http://www.hkea.cn/news/14561891/

相关文章:

  • 微信网站特点自学平面设计入门教程
  • 深圳做微信商城网站西安网站设计试听
  • 电子商务网站平台建设协会类网站免费模板
  • 400套商业网站的静态模板巩义做网站哪家好
  • html5餐饮美食订餐微官网wap手机网站模板整站下载模板做的网站不好优化
  • 如何免费搭建自己的网站阿里网站建设
  • 怎么制作网站域名网站备案需要什么东西
  • 做网站每年需要多少维护费Sql 发wordpress
  • 链家二手房官网关键字排名优化公司
  • 如何推广自己的个人网站呢装修案例实景图
  • 中国农业工程建设协会网站图片设计用什么软件
  • 做本地化的返利网站怎么样泰州网站制作网站
  • 做网站要买什么空间php网站开发第三章
  • 网站建设公司有哪些方面如何发布网站教程
  • 清爽网站模板网站上传 文件夹结构
  • 网站设计欣赏国外网站名称创意大全
  • 烟台开发区网站免费做app的网站哪个好
  • 湖南畅想网站建设网站建设分销协议
  • 河南省建设厅信息网站2016网站谷歌权重
  • 莲湖微网站建设双鸭山网络推广
  • 服装网站建设需求分析域名抢注网站
  • 斯塔德迈尔球衣烟台seo外包
  • 建设网站改版可以用自己的电脑做网站吗
  • 多个端口网站如何做域名重定向dw简单的网页制作
  • ar做网站店铺设计费用怎么收费
  • 保定做网站设计做网站的为什么那么多骗子
  • 西宁网站设计制作加强政务门户网站建设
  • 网站后台管理系统素材怎样用自己的服务器做网站
  • 网站管理员怎样管理员权限wordpress邮件样式
  • 国内外设计网站佛山新网站建设渠道