1. 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集群。
2. 工具
Operator的yaml文件和go文件,可以纯手写,没毛病。但是使用工具能够提高我们的编写效率。编写Operator的工具有:
- KUDO,Kubernetes 通用声明式 Operator)
- kubebuilder
- Metacontroller,可与 Webhook 结合使用,以实现自己的功能。
- Operator Framework
查找和分享Operator:OperatorHub
3. 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。
4. 第一个Operator
参考Kubernetes Operator 快速入门教程,使用Operator Framework开发一个Operator应用,代码仓库cnych/opdemo。
5. 书签
Introducing Operators: Putting Operational Knowledge into Software
Best practices for building Kubernetes Operators and stateful apps
揭秘Kubernetes Operator(一)
第一次玩 operator-sdk 就上手