Kubernetes(K8s)从入门到精通系列之十九:Operator模式

Kubernetes K8s从入门到精通系列之十九:Operator模式

  • 一、动机
  • 二、Operators in Kubernetes
  • 三、Operator示例
  • 四、部署Operator
  • 五、使用Operator
  • 六、编写自己的operator

Operator 是 Kubernetes 的软件扩展,它利用自定义资源来管理应用程序及其组件。 Operator 遵循 Kubernetes 原则,特别是控制循环。

一、动机

Operator模式旨在捕捉管理一项服务或一组服务的Operator的主要目标。负责特定应用程序和服务的操作员对系统应该如何运行、如何部署以及出现问题时如何反应有着深入的了解。

在 Kubernetes 上运行工作负载的人们通常喜欢使用自动化来处理可重复的任务。操作员模式捕获了如何编写代码来自动执行超出 Kubernetes 本身提供的任务。

二、Operators in Kubernetes

Kubernetes 专为自动化而设计。开箱即用,您可以从 Kubernetes 核心获得大量内置自动化功能。您可以使用 Kubernetes 自动部署和运行工作负载,并且可以自动执行 Kubernetes 的工作方式。

Kubernetes 的Operator模式概念使您可以通过将控制器链接到一个或多个自定义资源来扩展集群的行为,而无需修改 Kubernetes 本身的代码。 Operator 是 Kubernetes API 的客户端,充当自定义资源的控制器。

三、Operator示例

您可以使用operator实现自动化的一些操作包括:

  • 按需部署应用程序
  • 获取并恢复该应用程序状态的备份
  • 处理应用程序代码的升级以及相关更改,例如数据库架构或额外的配置设置
  • 向不支持 Kubernetes API 的应用程序发布服务以发现它们
  • 模拟整个或部分集群的故障以测试其弹性
  • 为分布式应用程序选择领导者,无需内部成员选举过程

更详细地说,operator可能是什么样子?这是一个例子:

  • 名为 SampleDB 的自定义资源,您可以将其配置到集群中。
  • 确保 Pod 正在运行的 Deployment,其中包含 Operator 的控制器部分。
  • 操作员代码的容器镜像。
  • 查询控制平面以查明配置了哪些 SampleDB 资源的控制器代码。
  • Operator的核心是代码,告诉API服务器如何使现实与配置的资源相匹配。
    • 如果添加新的 SampleDB,操作员将设置 PersistentVolumeClaims 来提供持久数据库存储,设置 StatefulSet 来运行 SampleDB,并设置 Job 来处理初始配置。
    • 如果删除它,Operator会拍摄快照,然后确保 StatefulSet 和 Volumes 也被删除。
  • Operator还管理定期数据库备份。对于每个 SampleDB 资源,Operator确定何时创建可以连接到数据库并进行备份的 Pod。这些 Pod 将依赖于具有数据库连接详细信息和凭据的 ConfigMap和Secret。
  • 由于Operator的目标是为其管理的资源提供强大的自动化,因此需要额外的支持代码。对于此示例,代码检查数据库是否正在运行旧版本,如果是,则创建为您升级数据库的 Job 对象。

四、部署Operator

部署 Operator 的最常见方法是将自定义资源定义及其关联的控制器添加到集群中。控制器通常会在控制平面之外运行,就像运行任何容器化应用程序一样。例如,您可以将集群中的控制器作为部署运行。

五、使用Operator

一旦部署了Operator,您就可以通过添加、修改或删除Operator使用的资源类型来使用它。按照上面的示例,您将为Operator本身设置一个部署,然后:

kubectl get SampleDB                   # find configured databaseskubectl edit SampleDB/example-database # manually change some settings

……就是这样!Operator将负责应用更改并保持现有服务的良好状态。

六、编写自己的operator

如果生态系统中没有operator可以实现您想要的行为,您可以编写自己的代码。

您还可以使用任何可以充当 Kubernetes API 客户端的语言/运行时来实现操作员(即控制器)。

以下是一些可用于编写自己的云原生运算符的库和工具。

  • Charmed Operator Framework
  • Java Operator SDK
  • Kopf (Kubernetes Operator Pythonic Framework)
  • kube-rs (Rust)
  • kubebuilder
  • KubeOps (.NET operator SDK)
  • Mast
  • Metacontroller along with WebHooks that you implement yourself
  • Operator Framework
  • shell-operator

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

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

相关文章

49. 简单数字加密

Description 实现一个加密函数,对输入的4位数字进行加密,并输出加密结果。加密规则如下: 对每一位数字都利用该数字对应的ASCII编码加上5,然后用除以10的余数代替该数字。将第一位和第四位交换,第二位和第三位交换。…

【智能算法应用】基于粒子群算法的多尺度Retinex图像去雾方法

目录 1.算法原理2.粒子群算法的多尺度Retinex图像去雾方法3.结果展示4.参考文献5.代码获取 1.算法原理 【智能算法】粒子群算法(PSO)原理及实现 多尺度Retinex算法 在Retinex算法中,雾化图像的形成可以总结为入射光和反射光的乘积: I ( x…

第 3 章:Spring Framework 中的 AOP

第 3 章:Spring Framework 中的 AOP 讲完了 IoC,我们再来聊聊 Spring Framework 中的另一个重要内容——面向切面编程,即 AOP。它是框架中众多功能的基础,例如声明式事务就是依靠 AOP 来实现的。此外,Spring 还为我们…

代码详解工厂设计模式【2】

文章1暴露了简单工厂模式的一些局限性。为了解决这些问题,我们可以使用工厂方法模式,它更好地遵循了开闭原则(对扩展开放,对修改封闭)。在工厂方法模式中,我们为每种产品提供一个工厂类,这样就避…

创邻科技张晨:期待解锁图技术在供应链中的关联力

近日,创邻科技创始人兼CEO张晨博士受浙江省首席信息官协会邀请,参加数字化转型与企业出海研讨会。 此次研讨会旨在深入探讨数字经济时代下,企业如何有效应对成本提升与环境变化所带来的挑战,通过数字化转型实现提效增益&#xff…

4090显卡 安装cuda 11.3 版本

文章目录 cuda 安装安装过程中会要求选择安装的内容更改cuda地址到你安装的地方 cuda 安装 cuda官网寻找cuda11.3 版本 https://developer.nvidia.com/cuda-11.3.0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&…

yolo-inference多后端+多任务+多算法+多精度模型 框架开发记录(python版)

先贴出github地址,欢迎大家批评指正:https://github.com/taifyang/yolo-inference 不知不觉LZ已经快工作两年了,由于之前的工作内容主要和模型部署相关,想着利用闲暇时间写一些推理方面的经验总结,于是有了这个工程。其…

C语言从头学20——指针

概念:指针是一个整型值,这个值代表一个内存地址,可以理解为指针是内存地址的门牌号码。通过指针可以找到所代表的内存地址上储存的内容。 一、指针变量的声明 字符 * 放在两个变量之间表示乘号,放在类型后边就表示声明该类…

6-11 函数题:某范围中的最小值

6-11 函数题&#xff1a;某范围中的最小值 分数 5 全屏浏览 作者 雷丽兰 单位 宜春学院 有n(n<1000)个整数&#xff0c;从这n个整数中找到值落在&#xff08;60至100之间&#xff09;的最小整数。 函数接口定义&#xff1a; int min ( int arr[], int n); 说明&#xf…

mysql的主从同步

MySQL的主从同步是一种数据复制技术&#xff0c;它允许将一个MySQL数据库服务器上的数据变化自动复制到一个或多个MySQL数据库服务器上。主从同步广泛用于高可用性、负载均衡、读写分离和数据备份。下面详细介绍MySQL主从同步的原理、配置步骤、常见问题及解决方法。 一、基本…

Dijkstra算法的原理

Dijkstra算法的原理可以清晰地分为以下几个步骤和要点&#xff1a; 初始化&#xff1a; 引入一个辅助数组D&#xff0c;其中D[i]表示从起始点&#xff08;源点&#xff09;到顶点i的当前已知最短距离。如果起始点与顶点i之间没有直接连接&#xff0c;则D[i]被初始化为无穷大&a…

边缘计算网关在智慧厕所远程监测与管理的应用

随着智慧城市建设的不断深入&#xff0c;城市公共设施的智慧化管理成为了提升城市品质和居民生活质量的关键建设。公厕作为城市基础设施的重要组成部分&#xff0c;其管理效率和卫生状况直接影响着市民的日常生活体验。在公厕设施建设背景下&#xff0c;边缘计算网关技术的应用…

使用Python多线程批量压缩图片文件

在现代社会中&#xff0c;图片已经成为人们生活中不可或缺的一部分&#xff0c;在很多应用中&#xff0c;我们需要处理大量的图片文件&#xff0c;并且常常需要将它们进行压缩以减小文件大小&#xff0c;提高加载速度&#xff0c; 如何使用Python的多线程功能来批量压缩图片文…

高精度汽车衡的应用领域有哪些?一文说清楚

很多人不知道什么是高精度汽车衡&#xff0c;它其实是一种称重工具&#xff0c;属于称重技术的重要分支。高精度汽车衡具有精准、快速且稳定的特点&#xff0c;在各个领域发挥着越来越重要的作用。下面来了解一下高精度汽车衡常见的应用领域。   高精度汽车衡在工业生产中的应…

关于xilinx srio ip复位问题

关于xilinx srio ip复位问题 语言 &#xff1a;Verilg HDL 、VHDL EDA工具&#xff1a; Vivado 关于xilinx srio ip复位问题一、引言二、FPGA 之间 srio通信复位处理复位时序不同步&#xff1a;SRIO 模块未正确初始化&#xff1a;等待复位完成的时间不足&#xff1a;SRIO 配置…

【JS重点09】JS闭包(面试重点)

本文核心目标&#xff1a;阅读完本文能说出什么是闭包&#xff0c;闭包作用以及如何利用闭包 一&#xff1a;闭包概览 1 闭包是什么 闭包&#xff08;closure&#xff09;是一个函数以及其捆绑的周边环境状态&#xff08;lexical environment&#xff0c;词法环境&#xff09…

NXP RT1060学习总结 - fsl_flexcan 基础CAN函数说明 -1

概要 CAN测试源码&#xff1a; https://download.csdn.net/download/qq_35671135/89425377 根据fsl_flexcan.h文件从文件末尾往前面梳理&#xff0c;总共30个基础CAN函数&#xff1b; 该文章只梳理常规CAN&#xff0c;增强型CAN后面再单独梳理。 使用的是RT1064开发板进行测试…

如何将接口返回/n替换为react.js中的换行符

将每个/n替换为ReactJS中的一个<br>标记。cpa_ability为后端返回的字段名

时间类:Calendar

一.Calendar概述 1.Calendar代表了系统当前时间的日历对象,可以单独修改,获取时间中的年&#xff0c;月&#xff0c;日 2.细节:Calendar是一个抽象类,不能直接创建对象。 二.获取Calendar日历类对象的方法 // 会根据系统的不同时区来获取不同的日历对象 // 会根据系统的不同…

6.每日LeetCode-数组类,找到所有数组中消失的数字(Go)

题目 448找到所有数组中消失的数字.go 给你一个含 n 个整数的数组 nums &#xff0c;其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但没有出现在 nums 中的数字&#xff0c;并以数组的形式返回结果。 示例 1&#xff1a; 输入&#xff1a;nums [4,3,2,7,8,2,…