Jump to section

什么是 Kubernetes Operator?

复制 URL

Kubernetes Operator 是一种封装、部署和管理 Kubernetes 应用的方法。我们使用 Kubernetes API(应用编程接口)和 kubectl 工具在 Kubernetes 上部署并管理 Kubernetes 应用。

Kubernetes Operator 是一种特定于应用的控制器,可扩展 Kubernetes API 的功能,来代表 Kubernetes 用户创建、配置和管理复杂应用的实例。

它基于基本 Kubernetes 资源和控制器概念构建,但又涵盖了特定于域或应用的知识,用于实现其所管理软件的整个生命周期的自动化。 

在 Kubernetes 中,控制平面的控制器实施控制循环,反复比较集群的理想状态和实际状态。如果集群的实际状态与理想状态不符,控制器将采取措施解决此问题。 

Operator 是使用自定义资源(CR)管理应用及其组件的自定义 Kubernetes 控制器。高级配置和设置由用户在 CR 中提供。Kubernetes Operator 基于嵌入在 Operator 逻辑中的最佳实践将高级指令转换为低级操作。

自定义资源是 Kubernetes 中的 API 扩展机制。自定义资源定义(CRD)会明确 CR 并列出 Operator 用户可用的所有配置。 

Kubernetes Operator 监视 CR 类型并采取特定于应用的操作,确保当前状态与该资源的理想状态相符。

Kubernetes Operator 通过自定义资源定义引入新的对象类型。Kubernetes API 可以像处理内置对象一样处理自定义资源定义,包括通过 kubectl 交互以及包含在基于角色的访问权限控制(RBAC)策略中。

Kubernetes Operator 会持续监控正在运行的应用,可备份数据,从故障中恢复,以及随着时间的推移自动升级应用。 

Kubernetes Operator 几乎可执行任何操作:扩展复杂的应用,应用版本升级,甚至使用专用硬件管理计算集群中节点的内核模块。

详细了解 Kubernetes Operator 的工作原理(包括实例),以及如何使用 Operator 框架和软件开发套件构建 Operator。

Kubernetes 可管理和扩展无状态应用,如 Web 应用、移动后端和 API 服务,无需掌握关于这些应用的工作原理的任何其他知识。Kubernetes 的内置功能旨在轻松处理这些任务。

但是,数据库和监控系统等无状态应用需要 Kubernetes 以外的其他域特定知识。有了这些知识,才能够扩展、升级和重新配置这些应用。

Kubernetes Operator 将这些特定域知识编码了到 Kubernetes 扩展中,从而能够实现应用生命周期的管理和自动化。

通过消除麻烦的手动应用管理任务,Kubernetes Operator 使这些流程可扩展、可重复且标准化。

对于应用开发人员,Operator 使得部署和运行其应用所依赖的基础服务变得更简单。 

对于基础架构工程师和供应商,Operator 提供了在 Kubernetes 集群上分发软件的一致方式,并通过识别和纠正应用问题降低了支持成本。 

除了 Kubernetes 中提供的基本自动化功能之外,Operator 还允许您编写代码来实现任务自动化。对于采用 DevOps 或站点可靠性工程(SRE)方法的团队,开发了将 SRE 实践应用到 Kubernetes 的 Operator。 

Operator 模式能够捕捉运维人员如何管理服务的规律。运维人员需要全面了解应用或服务的工作原理、部署方式以及如何解决可能发生的问题。

站点可靠性工程师或运维团队通常编写软件来管理应用,但 Operator 可以获取人类运维知识并将其编码到软件中,用于管理和部署 Kubernetes 工作负载,同时消除手动任务。 

Operator 最好由安装、运行和升级特定应用的业务逻辑专家来构建。

创建 Operator 一开始要实现应用安装自动化和自助服务部署,接着创建更复杂的自动化功能。

Kubernetes  Operator 软件开发套件(SDK)也可以帮助您开发自己的 Operator。SDK 提供构建、测试和封装 Operator 的工具,并可选择使用 Helm 图表、Ansible Playbook 或 Golang 创建 Operator

Operator 框架是提供开发人员和运行时 Kubernetes 工具的开源项目,使您能够加速开发 Operator。

Operator 框架包括:

  • Operator SDK:使开发人员能够利用其专业知识来构建 Operator,无需了解 Kubernetes API 的复杂性。
  • Operator 生命周期管理:监控在 Kubernetes 集群上运行的所有 Operator 的生命周期的安装、更新和管理。
  • Operator 计量:为提供专业服务的 Operator 启用使用情况报告。

红帽® OpenShift® 是一个企业就绪型 Kubernetes 容器平台,可以实现全堆栈自动化运维,以管理混合云多云部署。

红帽 OpenShift 使用 Kubernetes Operator 自动运行整个平台,同时通过 Kubernetes 对象在本地开放配置,从而允许进行快速安装和频繁可靠的更新。 

红帽 OpenShift 包括嵌入式 OperatorHub,这是来自软件供应商和开源项目的认证 Operator 库 。在 OperatorHub 中,您可以浏览并安装经认证可与红帽 OpenShift 配合使用以及已封装便于进行生命周期管理的 Operator 库。

继续阅读

文章

容器与虚拟机

Linux 容器和虚拟机(VM)都是封装型计算环境,里面组合了各种 IT 组件并独立于系统的其余部分。

文章

什么是容器编排?

容器编排是指自动化容器的部署、管理、扩展和联网。

文章

什么是 Linux 容器?

Linux 容器是与系统隔离开的一系列进程,它从单独的镜像运行,并由该镜像提供支持进程所需的全部文件。

详细了解容器

产品

企业级应用平台,包含一系列久经测试的服务,可在您选择的基础架构上将应用推向市场。

相关资源

培训

免费培训课程

"通过红帽来运行容器"技术概述

免费培训课程

容器、Kubernetes 和红帽 OpenShift 技术概述

免费培训课程

利用微服务架构开发云原生应用