利用 Kubernetes 降本增效?EasyMR 基于 Kubernetes 部署的探索实践

本文涉及的产品
对象存储 OSS,20GB 3个月
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: Kubernetes 是市面上最受欢迎的集群管理解决方案之一,本文将介绍 EasyMR 作为一款提供一站式可视化组件安装部署与可观测运维管理能力的大数据计算引擎产品,是如何基于 Kubernetes 部署进行实践探索的。

Kubernetes 是用于编排容器化应用程序的云原生系统。最初由 Google 创建,如今由 Cloud Native Computing Foundation(CNCF)维护更新。


Kubernetes 是市面上最受欢迎的集群管理解决方案之一。它自动化容器化应用程序的部署、扩展和管理,允许管理和协调跨多个主机的容器集群,提供容错性和可伸缩性等服务。


简单点说,如果你的应用程序可以容器化(例如,借助 Docker),那么绝对应该使用 Kubernetes 来运行和管理这些应用程序。在 k8s 的支持下,可以大大提高本地或云托管基础架构的利用率,所有计算资源都可以在多个应用程序之间动态而合理地共享。


Kubernetes 负责在整个应用生命周期中调度并自动执行与容器相关的任务,包括部署、运维、服务发现、存储配置、负载均衡、自动扩展、自我治愈实现高可用性等等。


如今,Kubernetes 和更广泛的容器生态系统日益成熟,成为通用的计算平台和生态系统,可与作为现代云基础架构和应用基本构建块的虚拟机 (VM) 一争高下,甚至大有后来居上之势。但是 Kubernetes 本身是一个比较复杂的平台,一个运维或者开发人员如果要说快速精通 Kubernetes 是不可能的,所以这就提高了传统运维开发人员使用其的门槛。


EasyMR 作为一款提供一站式可视化组件安装部署可观测运维管理能力的大数据计算引擎产品,我们自然也基于 Kubernetes 部署进行了实践探索。


EasyMR 基于 Kubernetes 部署的探索

之前我们讨论的 EasyMR 都是基于主机集群的模式下,需要部署服务就需要先接入主机,然后部署对应产品包服务从而完成应用集群的快速搭建。但是随着云原生相关技术栈(容器、微服务、服务网格等)和 Kubernetes 近些年的流行,传统模式也急需更新换代以适应大趋势的发展。所以我们决定在 EasyMR 原有的基于产品包部署的产品模式基础上,全新打造一个容器化部署的版本。


前面我们说过,由于 Kubernetes 自身的复杂性,一般开发运维人员使用起来是比较费力的,比如控制器(Deployment/Daemonset/Statefulset/Job/CronJob),存储(PVC/PV/StorageClass)等等,所以我们还是将复杂性交给平台去解决,暴露给用户的交互则是通俗易懂的。


在主机集群模式下,部署服务的步骤为下载包->解压缩安装包->配置下发->服务启动,EasyMR 自身的 easyagent 可以做到服务的全生命周期管理。基于 Kubernetes 的架构下,我们再去开发对应版本的 agent 也是可以做到的,但是经过对市面上一些开源服务的调研,我们发现 kubevela 正好可以弥补我们这部分能力。


kubevela 使用 OAM(Open Application Model),本质是根据软件设计的关注点分离原则对负责的 DevOps 流程的高度抽象和封装,一个以应用为中心的 Kubernetes API 分层,这种模型旨在定义云原生应用的标准。


作为 EasyMR 平台,基于 kubevela,我们只需要提供多种可扩展的组件类型,便可以对上层用户屏蔽 Kubernetes 的底层复杂实现逻辑。使用 EasyMR 部署 Kubernetes 服务的用户只需要关注服务类型以及修改应用配置,便可以实现服务的部署,关于 kubevela/OAM 更详细的部分我们会在后面的文章中介绍,本文便不多赘述。


对 EasyMR 而言,部署服务的维度始终是产品包,这点我们并没有去做更改,产品包的核心就是 schema 文件。因此,我们扩展了一些字段以适应 Kubernetes 部署的要求。


上述表格的 workload 表示服务类型,比如说平台内置主从 MySQL 的 workload,那么只需要在产品包中声明服务类型是 MySQL 以及镜像的名称,当执行部署的时候,平台会自动创建 MySQL 的有状态应用 statefulset、配置文件 configmap、服务 service、存储 pv/pvc 等等 Kubernetes 底层资源。大大节省了人力成本,提升了交付效率,后续如果需要扩展组件类型也可以在平台迭代中逐步完善。


EasyMR 云化部署架构如下图所示:

架构图中 vela-core 是核心部署组件,config-reloader 会动态监测 Pod 使用的 configmap 的更新状态从而重启应用 Pod。


EasyMR 基于 Kubernetes 的未来探索

EasyMR 作为基于云原生技术和 Hadoop、Hive、Spark、Flink、Hbase、Presto 等开源大数据组件构建的弹性计算引擎,做到能部署大数据组件只是里程碑中的第一步,未来我们的目标会投向更长远的地方——存算分离


● 使用 Kubernetes 替代 Yarn 作为调度组件

以 Flink 和 Spark 为代表的分布式流批计算框架的下层资源管理平台逐渐从 Hadoop 生态的 YARN 转向 Kubernetes 生态的 Kubernetes原生 scheduler 以及周边资源调度器,比如 Volcano 和 Yunikorn 等。


● 使用对象存储+缓存加速

随着云计算技术的成熟,企业存储又多了一个选项——对象存储。最早从 AWS 开始,后来所有的云厂商都在向这个方向发展,用对象存储去替换 HDFS。


但是对象存储用于支持 Hadoop 这样复杂的系统,会出现以下问题:文件 Listing 性能较弱;对象存储没有原子 Rename 从而影响任务的稳定性;对象存储数据最终一致性的机制会降低计算过程中的稳定性和正确性。所以我们还需要 Alluxio/Juicefs 这样的缓存加速层来提升我们使用对象存储的性能。


《数据治理行业实践白皮书》下载地址:https://www.dtstack.com/resources/1001?src=szsm

《数栈V6.0产品白皮书》下载地址:https://www.dtstack.com/resources/1004?src=szsm

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=szalykfz

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术 qun」,交流最新开源技术信息,qun 号码:30537511,项目地址:https://github.com/DTStack

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
1月前
|
Kubernetes Cloud Native 微服务
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
219 3
|
7天前
|
Kubernetes Cloud Native 微服务
企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构
这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!
|
11天前
|
存储 弹性计算 运维
阿里云容器服务Kubernetes版(ACK)部署与管理体验评测
阿里云容器服务Kubernetes版(ACK)是一个功能全面的托管Kubernetes服务,它为企业提供了快速、灵活的云上应用管理能力。
74 2
|
18天前
|
Kubernetes 应用服务中间件 nginx
K8s高可用集群二进制部署-V1.20
2.4 部署Etcd集群 以下在节点1上操作,为简化操作,待会将节点1生成的所有文件拷贝到节点2和节点3. 1. 创建工作目录并解压二进制包 mkdir /opt/etcd/{bin,cfg,ssl} -p tar zxvf etcd-v3.4.9-linux-amd64.tar.gz mv etcd-v3.4.9-linux-amd64/{etcd,etcdctl} /opt/etcd/bin/
|
18天前
|
Prometheus 监控 Kubernetes
深入理解Prometheus: Kubernetes环境中的监控实践
Kubernetes简介 在深入Prometheus与Kubernetes的集成之前,首先简要回顾一下Kubernetes的核心概念。Kubernetes是一个开源的容器编排平台,用于自动化容器的部署、扩展和管理。它提供了高度的可扩展性和灵活性,使得它成为微服务和云原生应用的理想选择。 核心组件 • 控制平面(Control Plane):集群管理相关的组件,如API服务器、调度器等。 • 工作节点(Nodes):运行应用容器的机器。 • Pods:Kubernetes的基本运行单位,可以容纳一个或多个容器。
|
21天前
|
Kubernetes Ubuntu Linux
k8s部署grafana beyla实现app应用服务依赖图可观测
k8s部署grafana beyla实现app应用服务依赖图可观测
28 4
|
15天前
|
消息中间件 Kubernetes Android开发
消息队列 MQ产品使用合集之如何在kubernetes环境里面部署
消息队列(MQ)是一种用于异步通信和解耦的应用程序间消息传递的服务,广泛应用于分布式系统中。针对不同的MQ产品,如阿里云的RocketMQ、RabbitMQ等,它们在实现上述场景时可能会有不同的特性和优势,比如RocketMQ强调高吞吐量、低延迟和高可用性,适合大规模分布式系统;而RabbitMQ则以其灵活的路由规则和丰富的协议支持受到青睐。下面是一些常见的消息队列MQ产品的使用场景合集,这些场景涵盖了多种行业和业务需求。
|
17天前
|
前端开发 Devops 测试技术
阿里云云效产品使用问题之更换所部署的环境关联的ACK集群该如何实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
18天前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
28 0
|
18天前
|
Prometheus 监控 Kubernetes
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
一篇文章讲明白Kubernetes(k8s)部署Promehteus监控
29 0

推荐镜像

更多