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

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

相关文章:

  • 【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 游戏表演赛分队(100分) - 三语言AC题解(Python/Java/Cpp)
  • 软件方案评审与模块优化:从FOC模块出发的电控平台建设
  • 【PX4-AutoPilot教程-TIPS】离线安装Flight Review PX4日志分析工具
  • 从零制作一个docker的镜像
  • react有什么特点
  • 渗透测试nginx增加400,500报错页面
  • 网页自动关闭
  • 【FreeRTOS】ARM架构汇编实例
  • Json-server 的使用教程
  • Jupyter Notebook简介
  • 儿童编程语言
  • 设计模式-享元模式Flyweight(结构型)
  • Vue3 之 Pinia 核心概念(八)
  • 零基础直接上手java跨平台桌面程序,使用javafx(五)TableView显示excel表
  • MySQL Hints:控制查询优化器的选择
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • Fundebug计费标准解释:事件数是如何定义的?
  • LeetCode29.两数相除 JavaScript
  • Objective-C 中关联引用的概念
  • React16时代,该用什么姿势写 React ?
  • React系列之 Redux 架构模式
  • XML已死 ?
  • 半理解系列--Promise的进化史
  • 表单中readonly的input等标签,禁止光标进入(focus)的几种方式
  • 记一次用 NodeJs 实现模拟登录的思路
  • 前端技术周刊 2019-01-14:客户端存储
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 微服务核心架构梳理
  • 一个完整Java Web项目背后的密码
  • 正则表达式-基础知识Review
  • ​用户画像从0到100的构建思路
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (1)(1.11) SiK Radio v2(一)
  • (5)STL算法之复制
  • (安卓)跳转应用市场APP详情页的方式
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)springboot家庭装修管理系统 毕业设计 613205
  • (附源码)计算机毕业设计ssm电影分享网站
  • (欧拉)openEuler系统添加网卡文件配置流程、(欧拉)openEuler系统手动配置ipv6地址流程、(欧拉)openEuler系统网络管理说明
  • (一)spring cloud微服务分布式云架构 - Spring Cloud简介
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET 某和OA办公系统全局绕过漏洞分析
  • @angular/cli项目构建--Dynamic.Form
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [android学习笔记]学习jni编程
  • [C#] 如何调用Python脚本程序
  • [C][栈帧]详细讲解
  • [codevs 1296] 营业额统计
  • [E单调栈] lc2487. 从链表中移除节点(单调栈+递归+反转链表+多思路)
  • [IE9] GPU硬件加速到底是实用创新还是噱头
  • [Java] 什么是IoC?什么是DI?它们的区别是什么?
  • [Latex学习笔记]数学公式基本命令
  • [Machine Learning][Part 7]神经网络的基本组成结构
  • [No000016]为什么假期计划总是做不到?