SREWorks云原生数智运维工程实践-Kubernetes 资源编排之四:CRD+Operator 篇(下)

本文涉及的产品
资源编排,不限时长
简介: SREWorks云原生数智运维工程实践-

四、 大数据通用Operator设计与实践

 

上文讲述了operator实现的复杂性。不过,我们发现,越是这样复杂的应用,越是会有一些共通性:因为这些复杂应用基本都是分布式应用,只是在某些状态或部署顺序上的有些特殊需求。于是,我们针对这个现状,开发了一款通用的大数据Operator。

 

这个通用Operator的架构设计如下:

 

image.png

 

与市面上常见的golang编写的operator不同的是,我们鼓励用户不编写代码,而是直接用yaml来描述控制逻辑,按照感知/决策/执行三大环节来进行控制器的逻辑分解和编排设计。同时,因为有这几个环节抽象的辅助,用户在设计operator的时候能够更有目的性,对于复杂场景,不引入过多的复杂逻辑流,尽量用无状态的方式解决问题。

 

同时,我们还借鉴了前端框架React中的VirtualDOM的设计,在云原生场景下,引入了VirtualResource这样的一个概念。VirtualResource能够将云原生对象资源映射进行Operator的内存数据库中,让控制器能够用SQL语法快速查询和操作这些资源对象,简化Reconcile调和场景的逻辑复杂性。对照React框架中生命周期的概念,VirtualResource也存在生命周期的概念,用户能够控制在资源变化的不同阶段,追加一些自定义的运维描述动作。

 

我们在大量使用helm的情况下,发现golang template语法在进行模板渲染的时候,还是不够灵活。于是我们把整体架构栈切换到python,采用jinja2进行控制器的语法渲染,同时我们也保留helm在渲染框架中,用户能够无缝切换两种渲染引擎。

 

这个通用Operator的控制器将原本需要golang编写的控制层逻辑,简化成使用cmd指令+yaml资源的方式进行描述。控制器的描述示例如下:通过helm将vvp这个应用的所有yaml下发,监听service的状态变化,同步更新ingress资源的状态。

 

 

default:

  def: crd.yaml

  deploy:

    - cmd: helm

      chart: vvp/vvp

      values: vvp/values.yaml

  maintain:

    - watch:

        category: ResourceDidChange

        kind: Service

        apiVersion: v1

      action:

        - cmd: kube-patch

          file: ingressUpdate.yaml

        

 

 

五、 总结

 

对于承载组件Component这个概念而言CRD+Operator可以说是最为复杂的,但是又是最万能的,如果Helm或者Kustomize无法满足需求,Operator基本上是唯一的选择。另一方面来说,CRD+Operator一般又会和Helm/Kustomize相辅相成一起出现,最难搞的事情通过Operator与apiserver交互解决,剩下的胶水粘合,各种YAML拼接之类的交给Helm/Kustomize搞定。

 

同时,我们也可以看出,CRD+Operator是云原生演进时期的方案,特别适合原本非k8s的软件架构来适配k8s环境。那些原本就在k8s云原生架构下出现的软件,会逐渐淡化Operator这个概念所有的工作负载都有对应的资源定义CRD,他们都有能力和k8s apiserver交互。

 

对于承载SREWorks中的应用Application这个概念而言,Operator是不合适的,无他,太复杂了。一般来说,Operator只要管好自己这个独立功能在K8S中的生命周期就已经足够了。从目前的社区方向来看,Operator不会作为一整个业务场景应用解决方案去裸提供,而是与Helm/Kustomize/KubeVela/AppManager等集成并作为一个整体组件or应用对外发布。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
19天前
|
运维 监控 持续交付
自动化运维在现代数据中心的应用与实践####
本文探讨了自动化运维技术在现代数据中心中的应用现状与实践案例,分析了其如何提升运维效率、降低成本并增强系统稳定性。通过具体实例,展示了自动化工具如Ansible、Puppet及Docker在环境配置、软件部署、故障恢复等方面的实际应用效果,为读者提供了一套可参考的实施框架。 ####
|
20天前
|
运维 监控 Devops
自动化运维实践:打造高效的DevOps流水线
在软件开发的快节奏中,自动化运维成为提升效率、确保质量的关键。本文将引导你理解自动化运维的价值,通过实际案例分享如何构建一个高效、可靠的DevOps流水线。我们将从持续集成(CI)开始,逐步深入到持续部署(CD),并展示代码示例来具体说明。准备好让你的运维工作飞跃式进步了吗?让我们开始吧!
|
19天前
|
人工智能 运维 自然语言处理
智能化运维:AI在IT运维领域的深度应用与实践####
本文探讨了人工智能(AI)技术在IT运维领域的深度融合与实践应用,通过分析AI驱动的自动化监控、故障预测与诊断、容量规划及智能决策支持等关键方面,揭示了AI如何赋能IT运维,提升效率、降低成本并增强系统稳定性。文章旨在为读者提供一个关于AI在现代IT运维中应用的全面视角,展示其实际价值与未来发展趋势。 ####
123 4
|
21天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维在企业IT管理中的应用与实践####
本文深入探讨了智能化运维(AIOps)的核心技术原理,通过对比传统运维模式,揭示了AIOps如何利用大数据、机器学习等先进技术提升故障预测准确性、优化资源分配及自动化处理流程。同时,文章详细阐述了智能化运维平台的实施步骤,包括数据收集与分析、模型训练与部署、以及持续监控与优化,旨在为企业IT部门提供一套切实可行的智能化转型路径。最后,通过几个典型应用案例,如某大型电商平台的智能告警系统和金融企业的自动化故障排查流程,直观展示了智能化运维在实际业务场景中的显著成效,强调了其在提升运维效率、降低运营成本方面的关键作用。 ####
43 4
|
23天前
|
数据采集 机器学习/深度学习 人工智能
智能运维在IT管理中的实践与探索
【10月更文挑战第21天】 本文深入探讨了智能运维(AIOps)技术在现代IT管理中的应用,通过分析其核心组件、实施策略及面临的挑战,揭示了智能运维如何助力企业实现自动化监控、故障预测与快速响应,从而提升整体运维效率与系统稳定性。文章还结合具体案例,展示了智能运维在实际环境中的显著成效。
44 4
|
2天前
|
Kubernetes 网络协议 应用服务中间件
Kubernetes Ingress:灵活的集群外部网络访问的利器
《Kubernetes Ingress:集群外部访问的利器-打造灵活的集群网络》介绍了如何通过Ingress实现Kubernetes集群的外部访问。前提条件是已拥有Kubernetes集群并安装了kubectl工具。文章详细讲解了Ingress的基本组成(Ingress Controller和资源对象),选择合适的版本,以及具体的安装步骤,如下载配置文件、部署Nginx Ingress Controller等。此外,还提供了常见问题的解决方案,例如镜像下载失败的应对措施。最后,通过部署示例应用展示了Ingress的实际使用方法。
14 2
|
13天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
本文源自2024云栖大会苏雅诗的演讲,探讨了K8s集群业务为何需要灾备及其重要性。文中强调了集群与业务高可用配置对稳定性的重要性,并指出人为误操作等风险,建议实施周期性和特定情况下的灾备措施。针对容器化业务,提出了灾备的新特性与需求,包括工作负载为核心、云资源信息的备份,以及有状态应用的数据保护。介绍了ACK推出的备份中心解决方案,支持命名空间、标签、资源类型等维度的备份,并具备存储卷数据保护功能,能够满足GitOps流程企业的特定需求。此外,还详细描述了备份中心的使用流程、控制台展示、灾备难点及解决方案等内容,展示了备份中心如何有效应对K8s集群资源和存储卷数据的灾备挑战。
|
1月前
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
72 1
|
2月前
|
JSON Kubernetes 容灾
ACK One应用分发上线:高效管理多集群应用
ACK One应用分发上线,主要介绍了新能力的使用场景
|
2月前
|
Kubernetes 持续交付 开发工具
ACK One GitOps:ApplicationSet UI简化多集群GitOps应用管理
ACK One GitOps新发布了多集群应用控制台,支持管理Argo CD ApplicationSet,提升大规模应用和集群的多集群GitOps应用分发管理体验。