带你读《云原生应用开发 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

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
6月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
国诚投顾携手阿里云,依托Serverless架构实现技术全面升级,构建高弹性、智能化技术底座,提升业务稳定性与运行效率。通过云原生API网关、微服务治理与智能监控,实现流量精细化管理与系统可观测性增强,打造安全、敏捷的智能投顾平台,助力行业数字化变革。
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
|
8月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
6月前
|
运维 监控 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生 Serverless 实践
通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
|
8月前
|
Kubernetes Cloud Native 安全
云原生机密计算新范式 PeerPods 技术方案在阿里云上的落地和实践
PeerPods 技术价值已在阿里云实际场景中深度落地。
|
4月前
|
人工智能 Cloud Native 算法
拔俗云原生 AI 临床大数据平台:赋能医学科研的开发者实践
AI临床大数据科研平台依托阿里云、腾讯云,打通医疗数据孤岛,提供从数据治理到模型落地的全链路支持。通过联邦学习、弹性算力与安全合规技术,实现跨机构协作与高效训练,助力开发者提升科研效率,推动医学AI创新落地。(238字)
310 7
|
10月前
|
运维 Cloud Native 测试技术
极氪汽车云原生架构落地实践
随着极氪数字业务的飞速发展,背后的 IT 技术也在不断更新迭代。极氪极为重视客户对服务的体验,并将系统稳定性、业务功能的迭代效率、问题的快速定位和解决视为构建核心竞争力的基石。
|
6月前
|
弹性计算 运维 Cloud Native
【云故事探索】NO.17:国诚投顾的云原生Serverless实践
简介: 通过与阿里云深度合作,国诚投顾完成了从传统 ECS 架构向云原生 Serverless 架构的全面转型。新的技术架构不仅解决了原有系统在稳定性、弹性、运维效率等方面的痛点,还在成本控制、API 治理、可观测性、DevOps 自动化等方面实现了全方位升级。
178 1
|
5月前
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
271 8
|
7月前
|
Cloud Native 中间件 调度
云原生信息提取系统:容器化流程与CI/CD集成实践
本文介绍如何通过工程化手段解决数据提取任务中的稳定性与部署难题。结合 Scrapy、Docker、代理中间件与 CI/CD 工具,构建可自动运行、持续迭代的云原生信息提取系统,实现结构化数据采集与标准化交付。
379 1
云原生信息提取系统:容器化流程与CI/CD集成实践

热门文章

最新文章