带你读《云原生应用开发 Operator原理与实践》第二章 Operator 原理2.1(一)

简介: 《云原生应用开发 Operator原理与实践》第二章 Operator 原理2.1

Operator的概念是由 CoreOS公司的工程师于 2016 年提出的,它可以让工程师根据应用独有的领域逻辑编写自定义的控制器。我们通过一个简单的例子理解      Operator。假设有一个连接数据库的 GoWeb 程序,开发者想将其部署到 k8s集群。在理想情况下,你会希望用 Deployment部署应用,然后暴露给 Service,对于应用服务的后端则是使用StatuflSet部署数据库,所以需要完成两部分的部署才能完成整个应用服务部署,前提条件:

1无状态部分,部署GoWeb应用2)有状态部分,部署数据库。

在上面的例子中,我们可以应用自身对应用程序与数据库之间关系的了解创建一个控制器,该控制器将以某种特定方式运行时执行某些操作,比如备份、更新、数据还原这些任务该如何完成取决于应用程序本身和业务限制(领域知识。这些与应用强相关的操作就是 KubernetesOperator 要实现的:代替原本需要由网站可靠性工程师(SRESiteReliabilityEnginner和运维工程师来完成的操作。在 KubernetesOperator就是KubernetesAPI的客户端,扮演 Controller的角色管理CRD

 

2.1      Operator简介

 

在介绍 Operator之前,我们先通过 Kubeclt命令行创建 KubernetesNamespace,那么,从发送一条创建命令到被 Kubernetes执行完成这一过程发生了什么。

首先通过执行以下命令创建一个 Namespace。

kubecltcreate-fnamespace-nginx.yaml

Yaml文件见代码清单 2-1

apiVersion:v1kind:Namespacemetadata:

name:nginx 

这时 Kubectl会向 API服务器发送一个 POST请求,API请求格式见代码清单 2-2。

curl--requestPOST\

--urlhttp://${k8s.host}:${k8s.port}/api/v1/namespaces\

--header'content-type:application/json'\


--data'{"apiVersion":"v1",

"kind":"Namespace","metadata":{

"name":"nginx"


}

从中可以看出 Kubernetes集群的组件交互都是通过RESTfulAPI 的形式完成的。流程如图 2-1所示。

 

                                image.png

2—1Namespace 资原创建流程

 

从上面的 cURL指令可以看出,尽管我们编写的是 Yaml文件格式,但是 KubernetesAPIServer接收的是 JSON数据类型, 而并非用户编写的 Yaml, 然后创建的所有资源的请求都通过Kube-APIServer预处理、检测处理后持久化到ETCD组件中。其中 APIServer也是 Kubernetes集群中与 ETCD交互的唯一一个组件。如果 Namespace资源被创建在 ETCD之后,Kubernetes事件监听机制就会将 Namespace资源的变化情况发送给监听Namespaces资源的 Namespace控制器,最后由 Namespace控制器执行创建 Nginx 命名空间的具体操作。同理,Kubernetes中的其他资源操作类似,都会存在对应的资源控制器来处理响应的资源请求。这些控制器共同组成了KubernetesAPI控制器集合。

我们不难发现,实现 Kubernetes中某一种资源类型,如 NamespaceReplicaSetPodKubernetes中的资源类型需要满足以下要求。

(1)        对该领域类型的模型抽象,如上面namespace-nginx.yaml文件描述的Yaml据结构,这个抽象决定了 KubernetesClient发送到 KubernetesAPIServerRESTfulAPI请求数据内容,也描述了这个领域类型本身。

(2)        实际去处理这个领域类型抽象的控制器,例如Namespace控制器、ReplicaSet控制器、Pod 控制器,这些控制器实现了这个抽象描述的具体业务逻辑,并通过 RESTfulAPI 提供这些服务。

我们将这种资源设计方式称声明式API。而当Kubernetes  开发者需要扩展 Kubernetes 能力时,也可以遵循这种模式,即提供一份对想要扩展的能力的抽象以及实现了这个抽象具体逻辑的控制器。前者称作 CRD后者称作 Controller

Operator就是通过这种方式实现 Kubernetes扩展性的一种模式Operator模式可以将一个领域问题的解决办法想像成一个操作者,这个操作者在用户和集群之间,通过一份份订单去操作集群的API,来达到满足这个领域各种需求的目的。这里的订单就是CR(即CRD的一个实例,而操作者就是控制器,是具体逻辑的实现者。之所以强调是Operator而不是计算机领域里传统的Server角色,是因为 Operator 本质上不创造和提供新的服务,它只是已有 KubernetesAPIServer的组合。下面将着重介绍这些基础概念,什么是CRD什么是 Controller

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
Kubernetes Cloud Native 安全
云原生架构的演进与实践
随着云计算技术的不断发展,云原生架构已成为现代软件开发的核心趋势。本文旨在探讨云原生架构的演变历程、核心理念及在实际项目中的应用案例。通过对Kubernetes、Docker等关键技术的分析,结合微服务架构的设计原则,本文将揭示如何构建高效、可扩展且易于维护的云原生应用。
53 10
|
29天前
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
19天前
|
Cloud Native 安全 Java
铭师堂的云原生升级实践
铭师堂完整经历了云计算应用的四个关键阶段:从”启动上云”到”全量上云”,再到”全栈用云”,最终达到”精益用云”。通过 MSE 云原生网关的落地,为我们的组织带来了诸多收益,SLA 提升至100%,财务成本降低67%,算力成本降低75%,每次请求 RT 减少5ms。
铭师堂的云原生升级实践
|
4天前
|
存储 人工智能 调度
容器服务:智算时代云原生操作系统及月之暗面Kimi、深势科技实践分享
容器技术已经发展成为云计算操作系统的关键组成部分,向下高效调度多样化异构算力,向上提供统一编程接口,支持多样化工作负载。阿里云容器服务在2024年巴黎奥运会中提供了稳定高效的云上支持,实现了子弹时间特效等创新应用。此外,容器技术还带来了弹性、普惠的计算能力升级,如每分钟创建1万Pod和秒级CPU资源热变配,以及针对大数据与AI应用的弹性临时盘和跨可用区云盘等高性能存储解决方案。智能运维方面,推出了即时弹性节点池、智能应用弹性策略和可信赖集群托管运维等功能,进一步简化了集群管理和优化了资源利用率。
|
2月前
|
运维 Kubernetes Cloud Native
云原生技术入门及实践
【10月更文挑战第39天】在数字化浪潮的推动下,云原生技术应运而生,它不仅仅是一种技术趋势,更是企业数字化转型的关键。本文将带你走进云原生的世界,从基础概念到实际操作,一步步揭示云原生的魅力和价值。通过实例分析,我们将深入探讨如何利用云原生技术提升业务灵活性、降低成本并加速创新。无论你是云原生技术的初学者还是希望深化理解的开发者,这篇文章都将为你提供宝贵的知识和启示。
|
18天前
|
Cloud Native 安全 Java
杭州铭师堂的云原生升级实践
在短短 2-3 年间,杭州铭师堂完整经历了云计算应用的四个关键阶段:从“启动上云”到“全量上云”,再到“全栈用云”,最终达到“精益用云”。也从云计算的第一次浪潮,迈过了第二次浪潮,顺利的进入到了 第三次浪潮 AI + 云。
|
18天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
29天前
|
Kubernetes Cloud Native API
云原生入门:从理论到实践的探索之旅
本文旨在为初学者提供一个关于云原生技术的全面介绍,包括其定义、核心原则、关键技术组件以及如何将这些概念应用于实际项目中。我们将通过一个简易的代码示例,展示如何在云原生环境下部署一个简单的应用,从而帮助读者更好地理解云原生技术的实践意义和应用价值。
|
4天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
20 0
|
1月前
|
运维 Cloud Native 开发者
云原生技术入门与实践
在云计算的浪潮中,云原生技术以其独特的优势和魅力吸引了越来越多的开发者和企业。本文将从云原生技术的基本概念、核心组件以及实际应用三个方面进行详细介绍,帮助读者更好地理解和掌握这一新兴技术。同时,文章还将分享一些实际案例和经验教训,让读者能够更深入地了解云原生技术的应用场景和发展趋势。
41 5