Kubernetes Operator

2018-01-17  本文已影响2914人  YichenWong

What is Operator?

Kubernetes Operator: 以软件定义的方式来管理运维操作。

A Site Reliability Engineer (SRE) is a person that operates an application by writing software. They are an engineer, a developer, who knows how to develop software specifically for a particular application domain. The resulting piece of software has an application's operational domain knowledge programmed into it.

Operator是管理特定应用程序的控制器,通过扩展kubernetes api以软件的方式帮助kubernetes用户创建,配置和管理复杂有状态的应用程序实例(etcd,redis,mysql,prometheus等等)。它建立在基本的Kubernetes资源和控制器概念的基础上,它包含管理特定应用程序的操作以及实现常见任务的自动化。

Stateless is Easy, Stateful is Hard

有了kubernetes,管理和扩展web应用,移动后端和api服务就变得相对容易了。
why?因为这些应用程序通常是无状态的,可以通过基本的Kubernetes APIs就能run起来,例如通过Deployments资源,可以在没有额外的知识的情况下扩展我们的应用程序并可以从故障中恢复。

一个更大的挑战是管理有状态的应用程序,如数据库,缓存和监控系统。
这些系统需要学习相关的知识来正确扩展,升级和重新加载配置,同时防止数据丢失或不可用。我们希望将这种特定于应用程序的操作知识通过编码解决,利用强大的kubernetes抽象的软件实现,以正确运行和管理应用程序。

The Operator Framework

Operator Framework是一个开源项目,提供开发人员和Kubernetes运行时工具,使我们能够加速operator的开发。operator Framework包括:

Build with the Operator SDK

image

Operator SDK提供了build,test和package操作。最初,SDK有助于将应用程序的业务逻辑(例如,如何扩展,升级或备份)与Kubernetes API结合起来执行这些操作。随着时间的推移,SDK可以让工程师更智能地使应用程序具有云服务的用户体验。
SDK中包含操作员共享的主要实践和代码模式,以帮助防止重新发明轮子。更多的想明白Oprator是如何通过编码实现的,coreos已经开源了两个例子:

How is an Operator Built?

Operator构建基于两个重要的kubernetes概念:Resources 和 Controllers。
例如,内置的ReplicaSet资源允许用户设置所需数量的Pod来运行,并且Kubernetes内的控制器通过创建或删除正在运行的Pod来确保在ReplicaSet资源中设置的状态保持为true。Kubernetes中有许多以这种方式工作的基础控制器和资源,包括Services,Deployments
Daemon Sets
以etcd Operator为例,operator是建立在基本的资源和控制器概念基础上,增加了一套知识或配置,允许operator执行普通的应用任务。例如,在手动扩展一个etcd集群时,用户必须执行多个步骤:为新的etcd成员创建一个DNS名称,再启动新的etcd实例,然后使用etcd管理工具(etcdctl member add)告诉现有集群这个新成员加入,集群新增1个etcd实例完成。 而用etcd operator,用户可以简单地将etcd cluster大小规模增加1个实例。

Lifecycle of an Operator

image

构建后,需要在Kubernetes集群上部署operator。Operator Lifecycle Manager是便于管理Kubernetes集群上operator的背板。有了它,管理员可以控制operator在哪些命名空间中可用,以及谁可以与正在运行的操作员交互。他们还可以管理运营商及其资源的整个生命周期,例如触发对运营商及其资源的更新。

上一篇下一篇

猜你喜欢

热点阅读