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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 带你读《云原生应用开发 Operator原理与实践》第一章引言1.2Operator 介绍

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

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

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

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

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

Operator是一种封装、 部署和管理 Kubernetes应用的方法, 用户可以使用KubernetesAPIKubectl工 具 在 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在容器化道路上推向了一个新的高度。现在,让我们先来了解 KubernetesOperator的历史。

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

谷 歌 于 20152月 发 布 Kubernetes并 于 20163月 将 其 捐 赠 给 了 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绑定,部署在一起统一提供服务。并且RedHatGoogle还建议废弃 TPR,也就是 Operator 依赖的第三方接口资源,Operator面临被关闭的风险。

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

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

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
18天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用开发中的角色与实践
【9月更文挑战第9天】 随着云计算技术的飞速发展,云原生(Cloud Native)已经成为推动企业数字化转型的核心力量。本文将深入探讨云原生的基本概念、关键技术及其在实际开发中的应用案例,旨在为读者提供一条清晰的云原生技术学习路径和应用指南。通过实例分析,我们将揭示云原生如何优化资源管理、提升应用性能及加快部署速度,进而帮助企业构建更加灵活、可靠和高效的软件系统。
|
4天前
|
设计模式 Cloud Native API
云原生时代的微服务架构实践
【9月更文挑战第23天】在这篇文章中,我们将深入探讨云原生环境下的微服务架构设计原则、优势以及实施策略。文章不仅涉及理论概念,还结合具体的代码示例,帮助读者理解如何在实际项目中应用微服务架构。通过阅读本文,你将获得构建、部署和管理微服务的实用知识,为你的云原生项目奠定坚实的基础。
|
5天前
|
运维 Kubernetes Cloud Native
云原生技术在现代企业中的应用与实践
【9月更文挑战第22天】 在数字化浪潮的推动下,云原生技术已经成为企业IT架构转型的重要方向。本文将深入探讨云原生技术的核心概念、优势以及如何在企业中实施云原生策略。我们将从容器化技术的基本原理出发,逐步引导读者理解服务网格和微服务架构的设计思路,并通过实际案例分析,展示云原生技术如何助力企业实现敏捷开发和高效运维。文章旨在为技术人员提供云原生实践的参考,并启发企业决策者对于云原生转型的深度思考。
|
2天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
12 4
|
4天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用开发中的实践与思考
【9月更文挑战第23天】本文将深入探讨云原生技术如何革新现代应用的开发流程。通过分析云原生的核心概念、优势以及实际应用案例,我们旨在揭示这一新兴技术范式如何助力开发者和企业更高效、灵活地构建和部署应用程序。文章还将提供具体代码示例,展示云原生技术在实际项目中的应用,帮助读者更好地理解和掌握该技术。
|
5天前
|
Cloud Native 持续交付 开发者
云原生技术在现代应用开发中的应用与实践
【9月更文挑战第22天】本文将深入探讨云原生技术如何革新现代应用开发,通过实际案例分析其对提高开发效率、促进持续集成与交付的显著影响。我们将从云原生的基本概念出发,逐步展开到容器化、微服务架构、自动化管理的实践操作,以及这些技术如何协同工作以支持复杂应用的快速迭代和扩展。文章旨在为开发者提供一套云原生技术的实践框架,帮助他们构建更加灵活、可维护的应用系统。
|
7天前
|
Kubernetes Cloud Native Serverless
探索云原生技术:从基础架构到应用实践
本文深入探讨了云原生技术的各个方面,包括其定义、核心原则、关键技术组件以及在现代企业中的应用。通过分析云原生如何推动数字化转型和提高业务敏捷性,文章旨在为读者提供对这一领域的全面了解和实际应用的指导。
33 7
|
5天前
|
Kubernetes Cloud Native 云计算
云原生技术入门与实践
【9月更文挑战第22天】本文将带你了解云原生技术,并探讨如何利用它来构建高效、可扩展的应用。我们将从基础概念开始,逐步深入到实际应用,最后通过一个简单的示例展示如何在Kubernetes上部署一个容器化应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧。
|
15天前
|
Cloud Native 持续交付 云计算
云原生技术在现代应用开发中的应用与实践
【9月更文挑战第12天】随着云计算技术的飞速发展,云原生已成为推动企业数字化转型的关键技术之一。本文将深入探讨云原生的基本概念、核心价值及其在现代应用开发中的实际应用案例,旨在为读者提供一套清晰的云原生应用开发指南。通过分析容器化、微服务架构、持续部署等核心技术的实践过程,我们将揭示云原生如何助力开发者高效构建、部署和管理可扩展的应用。你将看到代码示例,这些示例均选自真实世界的开发场景,帮助你理解云原生技术的强大功能和灵活性。
|
15天前
|
运维 Cloud Native Devops
云原生架构的崛起与实践云原生架构是一种通过容器化、微服务和DevOps等技术手段,帮助应用系统实现敏捷部署、弹性扩展和高效运维的技术理念。本文将探讨云原生的概念、核心技术以及其在企业中的应用实践,揭示云原生如何成为现代软件开发和运营的主流方式。##
云原生架构是现代IT领域的一场革命,它依托于容器化、微服务和DevOps等核心技术,旨在解决传统架构在应对复杂业务需求时的不足。通过采用云原生方法,企业可以实现敏捷部署、弹性扩展和高效运维,从而大幅提升开发效率和系统可靠性。本文详细阐述了云原生的核心概念、主要技术和实际应用案例,并探讨了企业在实施云原生过程中的挑战与解决方案。无论是正在转型的传统企业,还是寻求创新的互联网企业,云原生都提供了一条实现高效能、高灵活性和高可靠性的技术路径。 ##
24 3

热门文章

最新文章