kubebuilder的由来

深入了解kubebuilder 前文快速实现一个Kubernetes Operator介绍了kubebuilder工具,快速实现了一个Operator。今天我们深入水下,探寻kubebuilder究竟是如何工作的。 普通开发流程 如果不借助任何Operator脚手架,我们是如何实现Operator的?大体分为一下几步: CRD定义 Controller开发,编写逻辑 测试部署 API定义 首先通过k8s.io/code-generator项目生成API相关代码,定义相关字段。 Controller实现 实现Controller以官方提 阅读详情

在我们使用基于k8s的云平台部署和运维自己的应用时,拿openshift举例,如果我们想管理一个基于Rails的web应用,我们需要调用k8的api服务分别为web和数据库定义很多资源(bc, dc, svc, pvc, route, pod, service, configmap, secrets)等。这些资源通过k8s的controller-manager, scheduler等控制器和巡检器协同工作,保证这些资源和相对应的服务处于一种我们希望的状态。尽管有通用template等可以将这些资源进行整合,但无疑存在重复的操作和冗余管理。

k8支持用户对资源类型和控制器进行扩展和自定义。这个自定义的资源和控制器就是operator。支持了operator,我们根据自己的需要定义自己的operator,就不再使用通用的dc, bc这些资源而定义自己的资源和如何控制及其操作。由通用资源和通用控制器到自定义资源和自定义控制器,简化了基于k8云平台的自动化部署和运维。然而,自定义operator还是有很多重复工作,为了减少这些重复工作和规范operator,就有了kubebuilder,其为构建Kubernetes控制器(operator)的提供了框架和工具集。

回到最初的那个例子:现在如果我们在openshift或其他k8云平台部署自己的应用,我门就可以使用kubebuilder快速构建一个数据库的operator(自定义数据库资源和控制器),和一个web的operator即可。

我是2017年年底就开始使用openshift部署应用了,在2019年团队就开始使用operator,2022年团队已经开始了kubebuilder最佳实践的分享,我因为个人项目原因从2019年就减少了operator相关新技术的使用和学习。我们团队的使用,通常会落户于k8社区2年左右,我个人落后了许多。

现在和大家一起学习进步,追上大部队。 

K8S学习指南(67)-脚手架工具KubeBuilder KubeBuilder 是一个强大而灵活的工具集,为 Kubernetes Operator 的开发提供了便利。通过约定优于配置的设计理念,KubeBuilder 简化了控制器和 Operator 的开发流程,使得开发者能够更专注于业务逻辑的实现。通过自动生成的代码,避免了繁琐的模板代码编写,提高了开发效率。KubeBuilder 的不断发展和社区支持,使得它成为 Kubernetes Operator 生态系统中的重要组成部分。希望本文对你理解和使用 KubeBuilder 提供了有益的指导。 阅读详情

相关推荐

kubebuilder实现k8s operator模式

背景 在Kubernetes中,希望通过CRD的方式定义业务资源,并通过Watch这些CR Object来做出相应的业务操作,也就是K8S Operator的实现,但是从零开始实现K8S Operator,是一件非常繁杂和困难的事情,好在当前社区提供了丰富的Operator实现框架,最热门的当属kubebuilder。 本文将参考官方文档在Ubuntu18.04进行实践 Installation 1.kubebuilder安装 os=$(go env GOOS) arch=$(go env GOARCH

linclaus的博客 2009

Kubebuilder 架构介绍

Kubebuilder 是一个用 Go 语言构建 Kubernetes APIs 的框架,通过使用 Kubebuilder,用户可以遵循一套简单的编程框架,使用 CRD 构建API、Controllers 和 Admission WebHooks,实现对 k8s 的扩展。Kubebuilder 中的主要组件包含 Manager、Cache、Client 与 Finalizers。Manager组件主要实现管理外层,负责初始化 Controller、Cache、Client的工作;

渔夫.AI 1636

Qupath软件的安装与使用

Qupath软件的安装与使用软件安装软件下载软件安装【windows版】简单使用文件打开人工标注标注导出和导入 Qupath是一款开源的医学图像标注软件,适合放射影像及数字病理切片等的查看。同时,其自带的标注功能使得医生可以直接通过该软件进行病变区域的标注和分类。跟进一步的,该软件提供groovy脚本运行接口,可供操作者编写和运行脚本,将标注信息转换为xml或者json格式的数据进行进一步的后序处...

qq_40662074的博客 3万+

kubebuilder实战之二:初次体验kubebuilder

通过helloworld级别的demo开发和部署,初次体验kubebuilder

程序员欣宸的博客 1万+

用Python turtle库 绘制皮卡丘

Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了图形。 turtle基础知识参考: https://gitchat.blog.youkuaiyun.com/article/details/90696190 https://blog.csdn.ne...

qq_36295856的博客 2万+

使用FloodRisk2插件进行洪水风险评估

入汛以来,长江流域持续的强降雨使得沿岸多地成为洪水风险极高地区,抗洪、抢险、救灾继新冠病毒之后成为又一个攻坚阵地。如何科学地评估洪水风险,是快速决策的关键。 实际生活中,根据风险是否可控,一般将洪水风险大致分为两类:一类是通过数据分析可以得出其发生的可能性和后果,如强降雨引发的区域性洪水、水库/大坝溃决洪水等。这类洪水可以通过有关资料分析和设定一定条件计算得到可能的损失后果,也就是说,风险可以预判。另一类洪水风险基本是未知的,如滑坡堵塞河道形成堰塞湖引发的洪水,无法预知事件发生的地点和规模,具体的洪水风险无

QGISClass的博客 2877

kubebuilder

官网https://book.kubebuilder.io/ 中文文档https://cloudnative.to/kubebuilder/ 参考https://www.operator.org.cn/operatorsdk-jian-jie 学习链接operator实战 一 简介 二 安装 linux && mac os=$(go env GOOS) arch=$(go env GOARCH) # 下载 kubebuilder 并解压到 tmp 目录中 curl -L https://g

屈帅波的技术博客 5958

微带T型一分四功分器HFSS仿真与实物制作教程

本文介绍了使用HFSS软件进行微带T型一分四功分器的仿真与使用国产立创EDA软件将HFSS仿真文件转为PCB可加工文件的方法

qq_52127343的博客 2万+

认识Kubebuilder

Kubebuilder是一个旨在简化创建Kubernetes operators的框架。它使您能够直接从终端生成项目样板,包括诸如Makefile、Dockerfile和主要源文件(如main.go)等基本组件。一旦项目创建完成,Kubebuilder还可以帮助生成配置自定义资源定义(CRD)、控制器和Webhook的必要文件。

zhengzaifeidelushang的博客 2294

2023年全国职业院校技能大赛高职组“区块链技术应用”赛项赛卷(3卷)解析

我们先绘制题组中所有设计图我这边作图用的国内的在线作图工具。

2301_76737000的博客 5417

FFmpeg 部署与使用(含Docker部署)

ffmpeg 部署以及使用

weixin_38584583的博客 909

k8s kubebuilder系列开发 — 理解和剖析 Kubebuilder

原文转自:微信公众号云原生CTO 欢迎阅读 Kubernetes Operator Dev的 N 部分系列的第二部分。 如果你想从理论上了解operator是什么以及它们是如何工作的,请参阅第一部分。 在这一部分,我们将探索如何使用Kubebuilder来简化operator的编写。所以,我们让我们let's go! Kubebuilder: https://github.com/kubernetes-sigs/kubebuilder Kubebuilder是什么? 编写Kubernetes op.

学亮编程手记 3541

HttpClient跳过HTTPS证书验证的3种实战方法(含完整代码示例)

本文详细介绍了HttpClient跳过HTTPS证书验证的3种实战方法,包括自定义TrustManager、SSLContext配置和HttpClientBuilder高级定制,并提供完整代码示例。这些方法适用于开发和测试环境,帮助开发者快速解决自签名证书或未认证证书导致的HTTPS请求失败问题,但需注意生产环境的安全风险。

weixin_29213655的博客 528

kubebuilder-标记注释

导读 KubeBuilder 使用称为controller-gen生成实用程序代码和 Kubernetes 对象 YAML 的工具,例如 CustomResourceDefinitions。 为此,它使用特殊的“标记注释”(以 开头的注释// +)来指示有关字段、类型和包的附加信息。 kubebuilder的标记注释官网讲解 那么接下来让我们开始走进 “标记注释” CRD生成 关于CRD生成时的可以进行的配置,就有10多种,下面让我们一一分析 例子: //+kubebuilder:printcolumn:n

a1023934860的博客 3857

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

【计算机视觉 | MMDetection】关于mmdetection如何计算参数量、计算量和速度FPS

wzk4869的博客 3020

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

kubebuilder实战之一:准备工作

开启精彩的kubebuilder之旅,先把准备工作完成了

程序员欣宸的博客 1万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

kubebuilder实战一:什么是CRD编程,什么是operator开发?

介绍crd编程和operator开发的概念,以及operator开发常用的框架工具kubebuilder与operator-sdk

xingyunyang的博客 5566

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

深入解析Kubebuilder

参考网址:​​​​​​​​​​​​​​​​​​​​​​​Introduction - The Kubebuilder Book深入解析 Kubebuilder:让编写 CRD 变得更简单 - 知乎推荐朋友们多看上面官方提供的文档。前面我转发一篇博客 基于Kubebuilder开发Operator(入门使用)_chenxy02的博客-优快云博客 记录了对kubebuilder的入门使用,本文旨在加深对kubebuilder深圳,进一步熟悉kubebuilder的项目代码。GVK = GroupVersion

chenxy02的博客 1166

kubebuilder注释

第一个参数与名称之间用冒号隔开,而后面的参数使用逗号隔开。matchPolicy : 定义"规则"列表用于如何匹配传入请求, 允许的值为"Exact"(仅当它与指定规则完全匹配时才匹配)或"Equivalent"(如果请求修改了规则中列出的资源,则匹配请求,即使是通过另一个 API 组或版本)覆盖该字段的类型(默认为 Go 类型的等价物), 这通常必须与自定义序列化配对, 例如,metav1.Time 字段将被标记为"type: string"和"format: date-time"

whz-emm的博客 1647

k8s之kubebuilder简单理解

kubebuilder流程 1、创建manager,ctrl.NewManager,包括设置 shemme和端口、选主信息等配置、NewCluster(用来访问k8s,主要包括newCache和New读写client)、newEventRecorder。 1.1、newCache包括创建informerMap,分为structured、unstructured与metadata,其实最终都是调用newSpecificInformersMap,在newSpecificInformersMap中通过creat

fourierr的博客 2825

Kubebuilder 使用记录

文章目录operator 介绍Kubebuilder实操手册安装创建project operator 介绍 (1)不同应用平台需要管理的目标各有差异,如何在 Kubernetes 中兼容定义管理的 目标? (2)如何管理和备份系统的应用数据,协调各应用之间不同生命周期的状态? (3)能否用同样的 Kubectl 命令来管理自己定义的复杂分布式应用? 在这些场景下,Kubernetes 自身基础模型已经无法支撑不同业务领域下的自动化场景。为了满足这些需求,谷歌提出了 Third Party Resources

看,未来的博客 1000

k8s笔记——kubebuilder实战

Kubebuilder 是一个基于来构建 Kubernetes API 的框架,可以使用来构建 API、Controller 和 Admission Webhook。

mirana的专栏 3042

Kubebuilder与Operator开发

Kubebuilder与Operator开发 【免费下载链接】kubebuilder Kubebuilder - SDK for building Kubernetes APIs using CRDs 项目地址: https://...

gitblog_00857的博客 564

Kubebuilder Hello World

从0开始建立kubebuilder第一个程序

ahundredmile的博客 832

k8s之kubebuilder基础

Kubebuilder 是一个用于构建 Kubernetes API 的框架,专注于通过自定义资源定义(CRD)扩展 Kubernetes 的功能。它类似于 Web 开发中的 Rails 或 Spring Boot,能够显著减少 Kubernetes API 开发的复杂性,帮助开发者遵循最佳实践。

woshihlf的博客 1323
上一篇: openshift cli tools汇总
下一篇: kubebuiler安装
solinger
博客等级 码龄16年 125粉丝 99原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值