带你读《云原生应用开发 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搭建和管理企业级网站应用
相关文章
|
13天前
|
Kubernetes 监控 Cloud Native
云原生时代下的应用开发与部署实践
【10月更文挑战第4天】在云原生的浪潮中,开发者和运维人员面临着新的挑战和机遇。本文将通过实际案例,展示如何在云平台上高效地开发、部署和管理应用,同时确保系统的可扩展性和高可用性。我们将深入探讨容器化技术、微服务架构以及持续集成/持续部署(CI/CD)流程的实施策略,旨在为读者提供一套完整的云原生解决方案框架。
|
1天前
|
运维 Cloud Native 持续交付
云原生架构的演进与实践####
【10月更文挑战第16天】 云原生,这一概念自提出以来,便以其独特的魅力和无限的可能性,引领着现代软件开发与部署的新浪潮。本文旨在探讨云原生架构的核心理念、关键技术及其在实际项目中的应用实践,揭示其如何帮助企业实现更高效、更灵活、更可靠的IT系统构建与管理。通过深入剖析容器化、微服务、持续集成/持续部署(CI/CD)等核心技术,结合具体案例,本文将展现云原生架构如何赋能企业数字化转型,推动业务创新与发展。 ####
79 47
|
2天前
|
Kubernetes Cloud Native 持续交付
云原生技术:重塑现代应用开发与部署模式####
本文深入探讨了云原生技术的核心概念、发展历程及其在现代软件开发和部署中的关键作用。通过分析云原生架构的特点,如容器化、微服务、持续集成与持续部署(CI/CD),以及它如何促进应用的可伸缩性、灵活性和效率,本文旨在为读者提供一个关于云原生技术全面而深入的理解。此外,还将探讨实施云原生策略时面临的挑战及应对策略,帮助组织更好地把握数字化转型的机遇。 ####
|
1天前
|
Kubernetes Cloud Native 持续交付
云计算的转型之路:云原生技术的崛起与实践####
【10月更文挑战第16天】 本文深入探讨了云原生技术在现代IT架构变革中的核心作用,不同于传统概述,本摘要将聚焦于云原生如何促进企业实现敏捷开发、弹性伸缩及高效运维,通过具体案例分析展现其在实际业务场景中的创新应用,揭示这一技术趋势对企业数字化转型的深远影响。 ####
13 2
|
2天前
|
负载均衡 监控 Cloud Native
云原生架构下的微服务治理策略与实践####
在数字化转型加速的今天,云原生技术以其高效、灵活、可扩展的特性成为企业IT架构转型的首选。本文深入探讨了云原生环境下微服务治理的策略与实践路径,旨在为读者提供一个系统性的微服务治理框架,涵盖从服务设计、部署、监控到运维的全生命周期管理,助力企业在云端构建更加稳定、高效的业务系统。 ####
|
6天前
|
敏捷开发 运维 Cloud Native
云端新篇章:云原生技术的崛起与实践
在数字化转型的浪潮中,云原生技术以其独特的优势成为企业实现敏捷开发、弹性扩展和高效运维的关键驱动力。本文将深入探讨云原生的概念、核心组件及其在不同行业的应用案例,揭示其如何赋能业务创新,引领云计算进入新纪元。
|
2天前
|
Cloud Native 持续交付 云计算
云原生技术在现代软件开发中的实践与挑战####
【10月更文挑战第15天】 本文深入探讨了云原生技术的定义、核心组件及其在现代软件开发中的应用,并分析了企业在实施过程中面临的主要挑战及应对策略。通过案例分析,揭示了云原生架构如何助力企业实现敏捷开发、高效运维和成本优化,同时指出了安全性、人才短缺和多云管理等关键问题,为读者提供了全面的理解和实用的建议。 ####
12 1
|
2天前
|
人工智能 Serverless API
云原生应用开发平台CAP:一站式应用开发及生命周期管理解决方案
阿里云的云应用开发平台CAP(Cloud Application Platform)是一款一站式应用开发及应用生命周期管理平台。它提供丰富的Serverless与AI应用模板、高效的开发者工具链及企业级应用管理功能,帮助开发者快速构建、部署和管理云上应用,大幅提升研发、部署和运维效能。
15 1
|
3天前
|
运维 监控 Cloud Native
云原生架构下,微服务治理的艺术与实践####
【10月更文挑战第14天】 在数字化转型的大潮中,云原生技术以其高效、灵活与可扩展性成为企业IT架构的首选。本文深入探讨了云原生架构的核心理念,聚焦于微服务治理的策略与实践,揭示了如何通过精细化管理提升系统的响应速度、稳定性和可维护性。不同于传统的摘要概述,本文摘要旨在直接触及读者关注的核心——即如何在复杂多变的云环境中,实现微服务的高效协同与治理,为读者提供一个清晰的行动指南。 ####
11 1
|
10天前
|
Kubernetes Cloud Native 持续交付
云原生技术在现代应用开发中的实践与展望
【10月更文挑战第7天】随着技术的不断演进,云计算已从简单的资源租用模式转变为支持复杂、高效、灵活的云原生应用架构。本文将深入探讨云原生技术的核心概念及其在现代应用开发中的应用,通过分析Kubernetes容器编排和微服务架构的实践案例,揭示云原生技术如何推动软件开发的现代化进程。文章旨在为开发者和架构师提供一套实用的云原生应用开发指南,同时展望未来云原生技术的发展方向。
20 8