0%

Kubernetes Operator

Kubernetes Operator是啥?

Operators are software extensions to Kubernetes that make use of custom resources to manage applications and their components. Operators follow Kubernetes principles, notably the control loop.

Operator 是 Kubernetes 的扩展软件,通过自定义资源,管理应用及其组件。 Operator 遵循 Kubernetes 的理念,特别是在控制回路方面。

Kubernetes自定义资源包括Custom resources 和 Custom controllers。

Operator 模式旨在捕获(正在管理一个或一组服务的)运维人员的关键目标。负责特定应用和service的运维人员,在系统应该如何运行、如何部署以及出现问题时如何处理等方面有深入的了解。
在 Kubernetes 上运行工作负载的人们都喜欢通过自动化来处理重复的任务。Operator 模式会封装我们编写的(Kubernetes 本身提供功能以外的)任务自动化代码。

Operator可以自动化的事情包括:

  • 按需部署应用
  • 获取/还原应用状态的备份
  • 处理应用代码的升级以及相关改动。例如,数据库 schema 或额外的配置设置
  • 发布一个 service,要求不支持 Kubernetes API 的应用也能发现它
  • 模拟整个或部分集群中的故障以测试其稳定性
  • 在没有内部成员选举程序的情况下,为分布式应用选择首领角色

简单来说,Kubernetes实际是期望状态管理器,如果Kubernetes本身提供的功能无法达到期望状态,特别是对于有状态应用,那么就需要手动处理,而Operator可以使这种处理自动化。

更多内容,参考Operator 模式

本文中,将会学习编写一个Operator,并应用到k8s集群。

工具

Operator的yaml文件和go文件,可以纯手写,没毛病。但是使用工具能够提高我们的编写效率。编写Operator的工具有:

查找和分享Operator:OperatorHub

Operator Framework

Operator Framework是一个开源工具包,用来管理被称为operators的k8s应用程序,高效、自动化、可扩展。它的两个核心部分是Operator SDK 和 Operator Lifecycle Manager 。

Operator SDK:允许开发人员根据专业知识来构建Operator,而无需了解Kubernetes API的复杂性。
Operator Lifecycle Manager:帮助用户安装、更新和总体管理跨集群运行的所有Operators(及其相关服务)的生命周期。

在开发机上安装Operator SDK,在集群中安装Operator Operator Lifecycle Manager。

对于这两个组件,可以在katacoda上试玩,熟悉它们的安装和使用,Building Operators on OpenShift

第一个Operator

参考Kubernetes Operator 快速入门教程,使用Operator Framework开发一个Operator应用,代码仓库cnych/opdemo

书签

Introducing Operators: Putting Operational Knowledge into Software
Best practices for building Kubernetes Operators and stateful apps
揭秘Kubernetes Operator(一)
第一次玩 operator-sdk 就上手