Kubernetes operator 前置知识篇

云原生学习路线导航页(持续更新中)

  • 本文是 Kubernetes operator学习 系列的前置知识篇,帮助大家对 Operator 进行初步了解
  • Kubernetes operator学习系列 快捷链接
    • Kubernetes operator 前置知识篇
    • Kubernetes operator(一)client-go篇
    • Kubernetes operator(二)CRD篇
    • Kubernetes operator(三)code-generator 篇
    • Kubernetes operator(四)controller-tools 篇
    • Kubernetes operator(五)api 和 apimachinery 篇
    • Kubernetes operator(六)CRD控制器 开发实战篇
    • Kubernetes operator(七) kubebuilder 的安装及简单使用 篇
    • Kubernetes operator(八) controller-runtime 篇

1.Operator模式学习

1.1.Operator是什么

  • Operator 是 遵循 Kubernetes 的设计理念的一种扩展模式,它强调利用 定制 CR资源 去管理应用及其组件。
  • Operator 通过 将 应用程序的运维知识 转化为 可编程的代码,使我们能够定义和管理应用程序的整个生命周期,包括安装、配置、扩展、监控和升级等方面,进而以自动化的方式管理和运维复杂的应用程序。
  • 一个Operator,主要包括两部分:自定义资源(Custom Resource)控制器(Controller)
  • Operator核心原理是 声明式配置 和 状态驱动。您可以定义自定义资源的规范(Spec)和状态(Status),Operator会根据这些定义来自动化地管理应用程序。它可以监测资源的变化,识别和处理故障,以及根据配置和策略自动扩展应用程序。

1.2.开发一个Kubernetes Operator的步骤

  • 定义自定义资源
    • 使用Kubernetes的自定义资源定义语言(CRD),定义一个自定义资源来描述您的应用程序。
    • 除了必备的TypeMeta、ObjectMeta,CRD中还应包含 资源规范Spec 和 资源状态Status 字段。
  • 创建Operator
    • 编写一个自定义的控制器(Controller),用于监控和处理您定义的CR。
    • 当用户创建或修改CR时,Controller 能够 获取到用户修改后的CR,并根据CR中Metadata、Spec等字段的变化,执行必要的操作,处理完后还要将CR的状态信息写入Status字段中,供用户查看。
  • 部署Operator
    • 部署Operator包括两部分:安装CRD,部署Controller
    • 安装CRD:将CRD应用到集群中,使kubernetes集群能够识别到该资源
    • 部署Controller:Controller 通常会在control plane之外运行,就像运行任何容器化的应用程序一样。例如,将controller打包成镜像,以 Deployment 运行。
  • 创建和管理自定义资源实例
    • 使用 kubectl 或 编写yaml 创建CR的实例
    • 使用 kubectl 或 其他kubernetes客户端工具 管理CR

1.3.Operator开发 与语言无关

  • 你可以使用任何语言、任何运行时,开发Operator,只要能够作为kubernetes的客户端就行
  • 下面列举一些 库/框架,可以用于开发Operator
    • Charmed Operator Framework
    • Java Operator SDK
    • Kopf (Kubernetes Operator Pythonic Framework)
    • kube-rs (Rust)
    • kubebuilder
    • KubeOps (.NET operator SDK)
    • KUDO (Kubernetes Universal Declarative Operator)
    • Mast
    • Metacontroller along with WebHooks that you implement yourself
    • Operator Framework
    • shell-operator

1.4.Operator的后续学习路线

  • 阅读 CNCF Operator White Paper(Operator 白皮书).
  • 深入学习 Custom Resources
  • 在 OperatorHub.io 上查找已有的 Operator 练习
  • 发布你的Operator 给其他人使用
  • 阅读 CoreOS 介绍 Operator 模式的 原始文章 (这是原始文章的存档版本)
  • 阅读 Google Cloud 上关于 构建 Operator 的 最佳实践的文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/719292.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《精益DevOps》:填补IT服务交付的认知差距,实现高效可靠的客户期望满足

写在前面 在当今的商业环境中,IT服务交付已经成为企业成功的关键因素之一。然而,实现高效、可靠、安全且符合客户期望的IT服务交付却是一项艰巨的任务。这要求服务提供商不仅具备先进的技术能力,还需要拥有出色的组织协作、流程管理和态势感…

UniApp项目处理小程序分包

目前 uniApp也成为一种 App端开发的大趋势 因为在目前跨端 uniApp可以说相当优秀 可以同时兼容 H5 PC 小程序 APP 的技术 目前市场屈指可数 那么 说到微信小程序 自然就要处理分包 因为微信小程序对应用大小限制非常铭感 限制在2MB 超过之后就会无法真机调试与打包 不过需要注…

快速排序C语言代码实现(2)

#include<stdio.h> void quick_sort(int arr[], int left, int right) {if (left < right) {int i left, j right, pivot arr[i];while (i < j) {while (i<j&&arr[j]>pivot) {//此时判断使用i<j的目的是为了最终的目标位置是ij时的位置j--;}if…

vue项目中使用antvX6新手教程,附demo案例讲解(可拖拽流程图、网络拓扑图)

前言&#xff1a; 之前分别做了vue2和vue3项目里的网络拓扑图功能&#xff0c;发现对antv X6的讲解博客比较少&#xff0c;最近终于得闲码一篇了&#xff01; 需求&#xff1a; 用户可以自己拖拽节点&#xff0c;节点之间可以随意连线&#xff0c;保存拓扑图数据后传给后端&…

cPanel面板安装付费的SSL证书

前不久遇到购买Hostease服务器的客户反馈需要安装SSL证书。因为安装 SSL 证书不仅可以保护用户数据安全&#xff0c;增加用户信任度&#xff0c;提升搜索引擎排名&#xff0c;还有助于符合法规和标准&#xff0c;防止网络攻击。 安装SSL证书可以通过如下步骤: 1. 选择 SSL 证书…

数学建模【多元线性回归模型】

一、多元线性回归模型简介 回归分析是数据分析中最基础也是最重要的分析工具&#xff0c;绝大多数的数据分析问题&#xff0c;都可以使用回归的思想来解决。回归分析的任务就是&#xff0c;通过研究自变量X和因变量Y的相关关系&#xff0c;尝试去解释Y的形成机制&#xff0c;进…

Linux配置网卡功能

提示:工具下载链接在文章最后 目录 一.network功能介绍二.配置network功能2.1 network_ip配置检查 2.2 network_br配置2.2.1 配置的网桥原先不存在检查2.2.2 配置的网桥已存在-修改网桥IP检查2.2.3 配置的网桥已存在-只添加网卡到网桥里检查 2.3 network_bond配置检查 2.4 netw…

Access AR Foundation 5.1 in Unity 2022

如果已经下载安装了ARF但版本是5.0.7 可以通过下面的方式修改 修改后面的数字会自动更新 更新完成后查看版本 官方文档 Access AR Foundation 5.1 in Unity 2021 | AR Foundation | 5.1.2

【知识整理】Git 使用实践问题整理

问题1、fatal: refusing to merge unrelated histories 一、Git 的报错 fatal: refusing to merge unrelated histories 新建了一个仓库之后&#xff0c;把本地仓库进行关联提交、拉取的时候&#xff0c;出现了如下错误&#xff1a; fatal: master does not appear to be a g…

js原型原型链

js原型原型链 在 JavaScript 中&#xff0c;每个对象都有一个原型&#xff08;prototype&#xff09;。对象的原型是另一个对象的引用&#xff0c;它包含对象的共享属性和方法。JavaScript 中的原型链则是对象之间通过原型链接起来的一种机制&#xff0c;用于实现继承和属性查找…

电脑无法开启虚拟化

vm开启虚拟化失败 如果出现以下错误&#xff0c;需要进入bios界面&#xff0c;不同电脑进入界面的方式不一样。这里以hp为例&#xff1a; 1、关机后&#xff0c;按住开机键和f10&#xff0c;进入如下界面&#xff08;语言在主菜单里面&#xff09; 2、选择先进和下面的系统选…

c语言游戏实战(10):坤坤的篮球回避秀

前言&#xff1a; 这款简易版的球球大作战是博主耗时两天半完成的&#xff0c;玩家需要控制坤坤在游戏界面上移动&#xff0c;来躲避游戏界面上方不断掉下来的篮球。本游戏使用C语言和easyx图形库编写&#xff0c;旨在帮助初学者了解游戏开发的基本概念和技巧。 在开始编写代…

Vue使用高德地图定位到当前位置,并显示天气信息

首先得去高德控制台申请两个 key&#xff0c;一个天气key和一个定位key 获取天气信息的函数&#xff1a; const getWeather function (city) {// 使用 fetch 发送请求获取天气信息fetch(https://restapi.amap.com/v3/weather/weatherInfo?city${city}&keyeefd36557b0250…

哪个有名的工具可以安全记事 私密记事本笔记推荐

在这个数字化的时代&#xff0c;我们的生活已经离不开各种记事工具。它们帮助我们记录生活中的点点滴滴&#xff0c;无论是工作上的重要事项&#xff0c;还是个人的私密心情。然而&#xff0c;当我在寻找一个能够安心记录私密事情的工具时&#xff0c;安全性成为了我最关心的因…

C++从零开始的打怪升级之路(day42)

这是关于一个普通双非本科大一学生的C的学习记录贴 在此前&#xff0c;我学了一点点C语言还有简单的数据结构&#xff0c;如果有小伙伴想和我一起学习的&#xff0c;可以私信我交流分享学习资料 那么开启正题 今天分享的是关于继承的知识点 1.菱形继承 我们有许多关于继承…

【软件测试】Postman中变量的使用

Postman中可设置的变量类型有全局变量&#xff0c;环境变量&#xff0c;集合变量&#xff0c;数据变量及局部变量。区别则是各变量作用域不同&#xff0c;全局变量适用于所有集合&#xff0c;环境变量适用于当前所选环境&#xff08;所有集合中均可使用不同环境变量&#xff09…

【CSP试题回顾】202309-2-坐标变换(其二)

CSP-202309-2-坐标变换&#xff08;其二&#xff09; 关键点总结 1.输入输出的同步关闭&#xff0c;以加快I/O操作的速度 这一点还是很重要的&#xff0c;本题代码如果不进行输入输出的同步关闭会时间超限。 ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0);2.…

职场中的祖传代码处理建议

程序员是如何看待“祖传代码”的&#xff1f; 祖传代码的由来 在实际的程序员工作中&#xff0c;祖传代码是常见的。因为真正的互联网职场生活中&#xff0c;业务变动调整频繁&#xff0c;每到一个新的业务线&#xff0c;第一件事就是熟悉现有工程代码&#xff0c;看旧文档等…

K8S中POD的控制器

一、Pod控制器及其功用 Pod控制器&#xff0c;又称之为工作负载&#xff08;workload&#xff09;&#xff0c;是用于实现管理pod的中间层&#xff0c;确保pod资源符合预期的状态&#xff0c;pod的资源出现故障时&#xff0c;会尝试进行重启&#xff0c;当根据重启策略无效&am…

Linux基础命令[9]-wc

文章目录 1. wc 命令说明2. wc 命令语法3. wc 命令示例3.1 不加参数3.2 -c&#xff08;统计字节数&#xff09;3.3 -m&#xff08;统计字符数&#xff09;3.4 -l&#xff08;统计行数&#xff09;3.5 -L&#xff08;最长一行的长度&#xff09;3.6 -w&#xff08;统计单词数&am…