带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍(一)-阿里云开发者社区

开发者社区> 人民邮电出版社> 正文

带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍(一)

简介: 带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍
+关注继续查看

在 Kubernetes中我们经常使用Deployment、DaemonSet、Service、ConfigMap等资源,这些资源都是 Kubernetes 的内置资源,它们的创建、更新、删除等均由 ControllerManager负责管理,触发相应的动作来满足期望状态(Spec),这种声明式的方式简化了用户的操作,用户在使用时只需关心应用程序的最终状态即可。随着 Kubernetes的发展,在大数据、人工智能等领域出现了一些场景更为复杂的分布式应用系统,原生Kubernetes内置资源在这些场景下就显得有些力不从心。

(1)不同应用平台需要管理的目标各有差异,如何在 Kubernetes中兼容定义管理的目标?

(2)如何管理和备份系统的应用数据,协调各应用之间不同生命周期的状态?

(3)能否用同样的 Kubectl 命令来管理自己定义的复杂分布式应用?

在这些场景下,Kubernetes    自身基础模型已经无法支撑不同业务领域下的自动化场景。为了满足这些需求,谷歌提出了 ThirdPartyResources(TPR)概念,允许开发者根据业务需求的变化自定义资源和控制器,用于编写面向领域知识的业务逻辑控制,这就是Operator的核心概念。

Operator是一种封装、 部署和管理 Kubernetes应用的方法, 用户可以使用KubernetesAPI和 Kubectl工 具 在 Kubernetes上 部 署 并 管 理 Kubernetes应 用。Operator基于基本 Kubernetes 资源和控制器概念构建,但又涵盖了特定领域或应用的知识,用于实现其所管理软件的整个生命周期的自动化,它是一种特定于应用的控制器,可 扩展 KubernetesAPI的功能,是 Kubernetes 用户创建、配置和管理复杂应用的实例。

在 Kubernetes内置资源中,ControllerManager实施控制循环,反复比较集群中的期望状态和实际状态,如果集群的实际状态和期望状态不一致,则采取措施使二者一致。Operator使用自定义资源(CR)管理应用,CR引入新的对象类型后,Operator监视 CR类型,并采取特定于应用的操作,确保 CR 对象当前实际状态和期望状态一致,用户可通过在Operator中编写自定义规则来扩展新功能和更新现有功能,可以像操作Kubernetes原生组件一样,通过声明式的方式定义一组业务应用的期望状态,监控操作自定义资源,该特性使Operator几乎可以在Kubernetes 中执行任何操作,包括扩展复杂的应用、版本升级、管理有状态的服务等。这种设计使应用维护人员只需要关注配置自身应用的期望运行状态,而无须投入大量的精力在部署应用或业务运行过程中频繁操作可能出错的运维命令。


1.2.1       Operator 简介


1. Operator历史

 

Kubernetes(k8s)作为云原生应用的基石,已然成为当今容器编排的事实标准,为用户提供了很多拿来即用的基础资源组件,如Deployment、Pod、Service、Configmap等,这些基础组件为用户应用的部署和运维提供了极大的方便,Operator的出现更是将Kubernetes在容器化道路上推向了一个新的高度。现在,让我们先来了解 Kubernetes和 Operator的历史。

Docker在 2014—2015年是容器领域的佼佼者。Docker公司前身是一个平台即服务的初创公司 dotCloud,它们发现,许多应用程序在管理依赖关系和二进制文件时需要做大量的工作,因此它们将LinuxCgroups和 Namespaces的一些功能组合成一个包,这个包就是 Docker镜像,它可以让应用程序在任何基础设施上持续运行,并提供简单的命令操作 Docker。随着 Docker的风靡,Docker容器上的应用越来越多,如何协调编排这些容器成为一个新的研究方向,因此,涌现了一批容器编排工具,包括 NomadKubernetesDockerSwarm等,各种编排工具都可以使用容器来部署、管理和扩展应用程序,但是每个工具侧重点不同,最终 Kubernetes脱颖而出。

谷 歌 于 2015年 2月 发 布 Kubernetes并 于 2016年 3月 将 其 捐 赠 给 了 CNCFKubernetes 对应用开发人员非常有吸引力,它减少了对基础设施的依赖,并为开发人员提供了强大的工具来编排无状态的 Docker容器。Kubernetes 项目是容器编排的核心,在于一个叫作“控制器模式”的机制中,它通过对 ETCD中的 API对象的变化进行监听,并在Controller中对这些变化进行响应,无论是 Pod 等应用对象,还是存储设备、网络等服务对象,任何一个 API对象发生变化时,Kubernetes都会调用对应的 Controller执行响应动作,实现编排动作。

2016年,原 CoreOS 工程师邓洪超和他的同事在编程过程中突然有了一个想法,作为Kubernetes项目的用户,我们能不能编写一个 Controller来定义自己所期望的编排动作呢?于是,这两位工程师将这个小项目称为 Operator,旨在通过扩展   Kubernetes原生API的方式,在 Kubernetes中添加一个新的 API对象,自定义该对象的运维动作, 就可以为Kubernetes应用提供创建、配置和管理应用生命周期能力。这个小项目一经公布, 引起了大量 Kubernetes开发者的热烈追捧,很快大量的分布式项目都通过Operator运行起来。

相比 Helm描述静态关系的编排工具,Operator 定义的是应用运行起来后整个集群的动态逻辑。得益于 Kubernetes良好的API设计范式,Operator 在保证自由度的同时,还可以展现出清晰的架构和设计逻辑,开发者们可以专注于填写自己的业务逻辑,只需很小的开发量即可完成一个复杂的分布式系统的运维工作。

虽然 Operator一经面世就受到热烈追捧, 但是它的发展并不是一帆风顺的。Operator的诞生使得 Kubernetes项目的负责人 Google团队极为不适应,对于他们来说,Controller应该是隐藏在Kubernetes内部实现的核心机制,即使开放了,也应该按照 Kubernetes现有 API规范成为ControllerManager管理下的一部分,Google不希望失去 Kubernetes生态系统的主导权。随着 Kubernetes项目的发起人之一 BrendanBurns加入RedHat,Google团队和RedHad在社区推广UAS(UserAggregatedAPIServer),它允许用户编写一个自定义的 APIServer,在这里面添加自定义 API,就可以与原生的APIServer绑定,部署在一起统一提供服务。并且RedHat和 Google还建议废弃 TPR,也就是 Operator 依赖的第三方接口资源,Operator面临被关闭的风险。

在这种困境下,CoreOS公司在 GitHub 上发布了一个帖子,让社区的开发者发声,挽救 TPR和 Operator,由于 Operator的用户太多,在来自社区的压力下,Google和 RedHat最终选择了让步,Operator从绝境中重生。后来 Kubernetes使用 CRD替代了 TPR,这两种机制除了名称,其他方面并没有什么变化。

2018年,RedHad完成了对 CoreOS公司的收购,并推出了 Operator框架,进一步完善了 Operator相关工具,使 Operator的地位得到了稳固。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【译】Databricks使用Spark Streaming和Delta Lake对流式数据进行数据质量监控介绍
本文主要对Databricks如何使用Spark Streaming和Delta Lake对流式数据进行数据质量监控的方法和架构进行了介绍,本文探讨了一种数据管理架构,该架构可以在数据到达时,通过主动监控和分析来检测流式数据中损坏或不良的数据,并且不会造成瓶颈。
1094 0
Android官方开发文档Training系列课程中文版:动画视图之转场框架介绍
原文地址:http://android.xsoftlab.net/training/transitions/index.html 引言 Activity所呈现的UI经常会由用户的输入或者其它事件而发生变化。
815 0
阿里巴巴的云原生与开发者 | 10月15号栖夜读
今天的首篇文章,讲述了 : 利用云原生技术构建应用简便快捷,部署应用轻松自如,运行应用按需伸缩。如今,云原生已经成为下一代技术发展的趋势。在 2019 杭州云栖大会开发者峰会上,阿里巴巴资深技术专家李响就为大家分享了阿里巴巴的云原生技术与开发者的那些故事。
2882 0
单片机复位电路原理介绍
复位电路的工作原理在书本上有介绍,51单片机要复位只需要在第9引脚接个高电平持续2us就可以实现,那这个过程是如何实现的呢?在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。
1586 0
阿里开源!云原生应用自动化引擎 OpenKruise | 直击 KubeCon | 6月26号云栖夜读
今天的首篇文章,讲述了:近期开展的 KubeCon China 2019 上,阿里云将陆续为全球用户分享阿里巴巴超大规模云原生落地实践、云原生前沿技术与应用包括 OpenKruise 开源项目、开放云原生应用中心(Cloud Native App Hub),同时将重磅发布边缘容器、云原生应用管理与交付体系等产品和服务。
4957 0
iOS平台应用开发的敏捷设计流程
  本文翻译自《Computer Arts》中对专注于iPhone和iPad应用开发的设计师Sarah Parmenter的访谈录,希望对iPhone应用开发的朋友能有所帮助。   以下为全部译文:   对设计师来说,iPhone和iPad是全新的平台。
634 0
Elasticsearch Top5典型应用场景
题记 刚接触Elasticsearch的朋友,或多或少会遇到一个问题,Elasticsearch在实际公司应用中除了搜索到底能做什么? 本文给出了答案。 除了“You Know, for Search”,Elasticsearch的使用会不断增长和变化。ObjectRocket作为一家托管云计算公司,已经在ObjectRocket平台上提供托管Elasticsearch一段时间了,并且能够看到我们客户之间的一些明确趋势以及他们如何使用该产品。以下是我们在平台上看到的Top5场景用例:
8 0
472
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载