kubernetes operator解析

这篇具有很好参考价值的文章主要介绍了kubernetes operator解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

您是否想过站点可靠性工程 (SRE) 团队如何有效地成功管理复杂的应用程序? 在 Kubernetes 生态中,只有一个答案:Kubernetes Operators! 在本文中,我们将研究它们是什么以及它们是如何工作的。

kubernetes operator解析

Kubernetes Operator 概念由 CoreOS 的工程师于 2016 年开发,作为一种在 Kubernetes 集群上构建和驱动每个应用程序的高级原生方式,这需要特定领域的知识。 它通过与 Kubernetes API 的密切合作,提供了一种一致的方法来自动处理所有应用程序操作过程,无需任何人为反应。 换句话说,Operator 是一种打包、运行和管理 Kubernetes 应用程序的方式。

Kubernetes Operator 模式根据 Kubernetes 核心原则之一:控制理论行事。 在机器人和自动化领域,它是一种持续运行动态系统的机制。 它依赖于尽可能准确地根据可用资源快速调整工作负载需求的能力。 目标是开发具有必要逻辑的控制模型,以帮助应用程序或系统保持稳定。 在 Kubernetes 世界中,该部分由控制器处理。

控制器是一种特殊的软件,它在循环中响应集群中的变化并执行适配动作。 第一个 Kubernetes 控制器是 kube-controller-manager。 它被认为是后来建立的所有operator的祖先。

什么是控制器循环?

简而言之,控制器循环是控制器动作的基础。 想象一下,有一个非终止过程(在 Kubernetes 中称为协调循环)一遍又一遍地发生,如下图所示:

kubernetes operator解析

此过程至少观察一个 Kubernetes 对象,其中包含有关所需状态的信息。 对象如…

  • Deployments
  • Services
  • Secrets
  • Ingress
  • Config Maps

…由配置文件定义,配置文件由 JSON 或 YAML 中的清单组成。 然后控制器根据内置逻辑通过 Kubernetes API 进行持续调整以模仿所需状态,直到当前状态变为所需状态。

通过这种方式,Kubernetes 通过处理不断变化来处理云原生系统的动态特性。 为实现预期状态而执行的修改示例包括:

  1. 注意节点何时出现故障并要求一个新节点。
  2. 检查是否需要复制 pod。
  3. 如果需要,创建一个新的负载平衡器。

Kubernetes Operator如何工作?

Operator 是一个特定于应用程序的控制器。 它扩展了 Kubernetes API 以代表人类(运营工程师或站点可靠性工程师)创建、配置和管理复杂的应用程序。 让我们看看 Kubernetes 文档是怎么说的。

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

到目前为止,您已经知道operator利用控制器来观察 Kubernetes 对象。 这些控制器有点不同,因为它们跟踪自定义对象,通常称为自定义资源 (CR)。 CR 是 Kubernetes API 的扩展,它提供了一个可以存储和检索结构化数据(应用程序的所需状态)的位置。 整个操作原理如下图所示。

kubernetes operator解析

Operator 持续跟踪与特定类型的自定义资源相关的集群事件。 可以跟踪的这些自定义资源上的事件类型是:

添加

更新

删除

当操作员收到任何信息时,它将采取行动将 Kubernetes 集群或外部系统调整到所需状态,作为其在自定义控制器中的协调循环的一部分。

如何添加自定义资源

自定义资源通过添加对您的应用程序有帮助的新型对象来扩展 Kubernetes 的功能。 Kubernetes 提供了两种向集群添加自定义资源的方式:

  1. 通过 API 聚合,这是一种高级方法,需要您构建自己的 API 服务器,但会给您更多控制权
  2. 通过自定义资源定义 (CRD),这是一种无需任何编程知识即可创建的简单方法,作为对原始 Kubernetes API 服务器的扩展。

这两个选项满足不同用户的需求,他们可以在灵活性和易用性之间进行选择。 Kubernetes 社区创建了一个比较,可以帮助您决定哪种方法适合您,但最受欢迎的选择是 CRD。

自定义资源定义

自定义资源定义已经存在了一段时间; 第一个主要的 API 规范与 Kubernetes 1.16.0 一起发布。 下面的清单提供了一个示例:


apiVersion: apiextensions.k8s.io/v1beta1 
kind: CustomResourceDefinition
metadata:
  name: application.stable.example.com 
spec:
  group: stable.example.com 
  version: v1 
  scope: Namespaced 
  names:
    plural: application 
    singular: applications 
    kind: Application 
    shortNames:
    - app 

此 CRD 将允许您创建一个名为“应用程序”的 CR。 (我们将在下一节中使用它。)前两行定义了您要创建的对象类型 CustomResourceDefinition 的 apiVersion apiextensions.k8s.io/v1beta1。

元数据描述了资源的名称,但这里最重要的地方是“spec”字段。 它允许您指定组和版本以及可见范围——命名空间或集群范围。

之后,您可以定义多种格式的名称并创建一个方便的短名称,这样您就可以执行命令 kubectl get crds 来获取现有的 crd。

自定义资源

上面的 CRD 允许您创建自定义资源的以下清单。


apiVersion: stable.example.com/v1 
kind: Application
metadata:
  name: application-config
spec:
  image: container-registry-image:v1.0.0
  domain: teamx.yoursaas.io
  plan: premium

如您所见,我们可以在此处包含为特定案例运行应用程序所需的所有必要信息。 这个自定义资源将由我们的operator观察——准确地说,由operator的自定义控制器观察。 根据控制器中的内置逻辑,必要的动作将模仿所需的状态。 它可以为我们的应用程序创建 Deployment、Service 和必要的 ConfigMap。 运行它并通过特定域上的入口公开它。 这只是一个用例示例,但它可以做任何设计的事情。

Operators 也可用于配置 Kubernetes 外部的资源。 您可以在不离开 Kubernetes 平台的情况下控制外部路由器的配置或在云中创建数据库。

Kubernetes Operators:案例研究

为了全面了解 Kubernetes Operators,让我们来看看 Prometheus Operator,它是最早也是最受欢迎的 Operators 之一。 它简化了 Prometheus、Alertmanager 和相关监控组件的部署和配置。

  • Prometheus Operator 的核心功能是监控 Kubernetes API 服务器对特定对象的更改,并确保当前的 Prometheus 部署与这些对象匹配。 Operator 根据以下自定义资源定义 (CRD) 执行操作:
  • Prometheus,它定义了所需的 Prometheus 部署。
  • Alertmanager,它定义了所需的 Alertmanager 部署。
  • ServiceMonitor,它以声明方式指定应如何监视 Kubernetes 服务组。 Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
  • PodMonitor,它以声明方式指定应如何监视一组 pod。 Operator 根据 API 服务器中对象的当前状态自动生成 Prometheus 抓取配置。
  • PrometheusRule,它定义了一组所需的 Prometheus 警报和/或记录规则。 Operator 生成一个规则文件,可供 Prometheus 实例使用。

Prometheus Operator 自动检测 Kubernetes API 服务器对上述任何对象的更改,并确保匹配的部署和配置保持同步。文章来源地址https://www.toymoban.com/news/detail-497862.html

到了这里,关于kubernetes operator解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • RabbitMQ高级特性解析:消息投递的可靠性保证与消费者ACK机制探究

    学习RabbitMQ高级特性,涵盖消息的持久化、确认模式、退回模式以及消费者ACK机制等方面,助您构建高可靠性的消息队列系统。

    2024年01月16日
    浏览(66)
  • kubernetes operator解析

    您是否想过站点可靠性工程 (SRE) 团队如何有效地成功管理复杂的应用程序? 在 Kubernetes 生态中,只有一个答案:Kubernetes Operators! 在本文中,我们将研究它们是什么以及它们是如何工作的。 Kubernetes Operator 概念由 CoreOS 的工程师于 2016 年开发,作为一种在 Kubernetes 集群上构建

    2024年02月10日
    浏览(32)
  • 【可靠性测试】什么是可靠性测试:定义、方法和工具

    可靠性定义为在特定环境中指定时间段内无故障软件运行的概率。 执行可靠性测试是为了确保软件是可靠的,它满足其目的,在给定的环境中指定的时间量,并能够呈现无故障运行。 在这个机械化的世界里,现在人们盲目地相信任何软件。无论软件系统显示出什么结果,人

    2024年02月05日
    浏览(43)
  • TCP如何保证可靠性,TCP如何实现可靠性传输的

    tcp 如何保证可靠性 大家都知道TCP是可靠性传输协议,既然是可靠的,就需要解决比如包丢失了、数据被破坏了、包重复了、乱序了等等这样的问题。下面将从几个方面介绍TCP的可靠性。 1. 校验和 TCP每一段报文都有校验和,这保证了报文不被破坏或篡改,如果收到的报文在校

    2024年02月10日
    浏览(50)
  • 嵌入式硬件电路可靠性的关键问题的分析(可靠性介绍)

    :失效率 温度 可靠性 降额 器件工艺 质量与可靠性的区别 质量:时间点上去衡量                                              可靠性:一段时间上才能衡量,需要有量才能去衡量(大部分是产品量产之后才会出现问题) 质量:在时间点上衡量

    2024年03月24日
    浏览(48)
  • 配电网可靠性评估(4)—(顶刊复现)基于线性规划的配电网可靠性评估

            之前的博客中介绍了配电网可靠性评估的三种方法、分别是解析法中的最小路法,以及序贯蒙特卡罗模拟法及非序贯蒙特卡洛模拟法,顺带提到了含有分布式电源的配电网可靠性评估方法。 配电网可靠性评估(一)最小路法和非序贯蒙特卡洛模拟法 配电网可靠性评

    2024年02月08日
    浏览(53)
  • RabbitMQ --- 消息可靠性

    消息队列在使用过程中,面临着很多实际问题需要思考:      消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 co

    2024年02月14日
    浏览(50)
  • 可靠性测试

    我们认为软件可靠性始终是重要的,但它对于任务关键型、安全关键型和高使用率系统是必不可少的。如您所料,可靠性测试可用于降低可靠性问题的风险。可靠性故障背后的常见问题包括内存泄漏、磁盘碎片和耗尽、间歇性基础设施问题以及超时值低于可行值。 可靠性定义

    2024年02月16日
    浏览(49)
  • RabbitMQ-保证消息可靠性

    消息从发送,到消费者接收,会经理多个过程: 其中的每一步都可能导致消息丢失,常见的丢失原因包括: 发送时丢失: 生产者发送的消息未送达exchange 消息到达exchange后未到达queue MQ宕机,queue将消息丢失 consumer接收到消息后未消费就宕机 针对这些问题,RabbitMQ分别给出了

    2024年02月07日
    浏览(53)
  • RabbitMQ消息的可靠性

    面试题: Rabbitmq怎么保证消息的可靠性? 1.消费端消息可靠性保证: 消息确认(Acknowledgements) : 消费者在接收到消息后,默认情况下RabbitMQ会自动确认消息(autoAck=true)。为保证消息可靠性,可以设置autoAck=false,使得消费者在处理完消息后手动发送确认(basicAck)。如果消费

    2024年04月14日
    浏览(74)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包