​如何搭建云原生大数据平台的K8s底座
发布时间:2022-08-03 12:09:59 所属栏目:云计算 来源:互联网
导读:伴随着数字化转型脚步的加快,大数据已成为企业经营管理的主要手段之一,越来越多的行业也选择通过大数据来实现业绩增长。今年年初,CNCF中国区总监陈泽辉在2022云原生超级英雄会上表示,Kubernetes (K8s)已无处不在,越来越多的人在使用云原生和Kubernetes
|
伴随着数字化转型脚步的加快,大数据已成为企业经营管理的主要手段之一,越来越多的行业也选择通过大数据来实现业绩增长。今年年初,CNCF中国区总监陈泽辉在2022云原生超级英雄会上表示,Kubernetes (K8s)已无处不在,越来越多的人在使用云原生和Kubernetes。数据时代,企业如何让云原生大数据平台借力K8s以发挥最大价值,今天我们就跟着智领云科技云平台研发经理Jason一起来深入了解一下。 背景介绍 什么叫云原生架构 并不是运行在云主机上的程序或者容器化的程序就是云原生程序。 过去十年,随着云计算的发展,云原生技术架构逐步被更多的科技企业采纳和应用,其概念可归纳为以下几点: Containerization:可运行代码必须容器化发布 Dynamic management:动态配置服务,按使用量付费 Micro-service:使用类似于K8s的云操作系统面向资源池发布和运维微服务,而不是自己面向节点操作 Orchestration: 使用底层云平台操作系统的分布式管理体系,而不是自己独立管理 Automation: 大部分运维操作由代码完成,而不是手工操作 云原生架构的优势 使用云原生架构带来的好处很多,其优势归纳起来大概可以有以下几点:多租户、按需扩容、高效迭代、降低成本,以及安全性和合规性。 智领云联合创始人 & CEO彭锋博士曾以Twitter公司为例,强调云原生架构的优势。 “Twitter从2011年开始建设自己内部的私有云平台,我们看到的是业务开发效率数量级的增长,同时避免了部门墙,避免了数据孤岛和应用孤岛(因为都必须遵守云平台和其上的大数据平台的发布规范)。从80台机器的Hadoop集群,到8000台机器的全局数据平台,在统一集群中不断扩展数据能力矩阵,支撑业务运营。很多数据能力建设的工作,也因为应用的云原生化成为可能。” 对比企业在使用传统大数据平台时遇到的困难和难点,云原生架构的优势便能够更好地凸显出来。那么,云原生架构又是如何解决这些难点,成为如今大数据平台搭建的市场趋势呢? 传统大数据平台的难点,主要体现在其组件安装运维复杂: 每个大数据组件都有自己的安装流程,系统要求,第三方库支持要求 独立的分布式管理,高可用,容错,日志,授权,鉴权机制 难以实现对于多租户,资源隔离,审计,计费的支持 工具体系复杂,无法支持CI/CD,系统测试,质量控制 无法实现大数据组件及应用的混合调度,资源使用率低 因此,数据应用的开发流程及管理散布在各个系统组件中,缺乏统一全局的管理,开发运营效率低。 传统大数据平台存在的问题,已经逐渐无法支撑数据驱动业务运营更为丰富的需求,所以呈现出来的市场趋势就是大数据平台的云原生化。具体来看: K8s基本已成为云平台的标配,我们只需要适配K8s即可 新的大数据组件更多的以云原生的方式发布 Hadoop会被云原生存储+资源调度取代,现有Hadoop集群的工作负载需要迁移 原始的大数据平台已经建设完毕,DataOps的需求出现 云原生应用的普及,数据源逐渐标准化,在线集成处理成为可能 数字化转型需要低门槛,低代码的自助型平台 规划设计 接下来,我们要讨论的是怎样规划设计这样的云平台系统,这部分可以从基础设施层(IaaS)、平台服务层(PaaS),以及应用交付层来看,而每个层面都需要结合当前的业务规模和需求来权衡一些问题,比如: IaaS:基础设施管理成本的权衡 PaaS:K8s的版本管理、监控告警日志集成 应用交付:如何隔离容器编排层的复杂概念,专注于应用开发 我们的目标是要去交付一个K8s云平台,需求可以先拆分为以下三大方面: 首先 IaaS 层的建设,我们要决定是托管在公有云,还是自建私有云,或者是最复杂的混合云架构; 其次 PaaS 层的建设,我们要决定是用原生的K8s,还是发型版的K8s(各公有云厂商的K8s服务,或者像Kubesphere、Rancher、OpenShift这些面向私有发布的发行版等); 最后是应用交付的体系,我们的目的不是为了搭建K8s而搭建,交付了K8s平台之后,更重要的是如何快速、灵活地将业务系统“搬”到K8s平台上来,并在未来能够充分利用好K8s容器编排的各种特性,例如容器运行时/网络/存储接口、故障自动迁移、弹性伸缩、租户控制等。 针对以上三个方面的设计规划,其现状及问题包括: (1) IaaS层:最主要的是管理成本的权衡:公有云搭建最快,具备公有云产品使用的能力即可,管理成本相对较低,但产品价格很贵;私有云需要有虚拟化平台建设及运维的能力,管理成本相对较高;混合云前两者的能力都需要,还需要具备网络基础设施建设的能力,管理成本最高。 (2) PaaS层:官方开源版本无任何定制,但要构建一套完整的生态系统,需要自行搭建例如仓库、监控、报警、日志、负载均衡等额外的系统,技术选型可控但对团队能力要求高;发行版一般提供一套比较完备的生态系统,但技术选型往往不可控,容易被绑定,另外难以满足自定义需求的时候,还是需要自行建设;除此之外,K8s的版本发布非常快,如果想用新的特性或者修复bug,需要跟上新版本,但底层平台升级往往是非常吃力且容易出事故的。 (3) 应用交付:K8s的优势是容器化编排能力很强,一开始看上去像海面上一座优美的小岛;劣势是它的系统架构、概念原理、管理使用非常复杂,等深入了解了之后才发现小岛原来只是露出海面的冰山一角;对于应用开发者来说,平台工程师应该把容器编排层的能力抽象隔离并封装简化,让上层用户专注于应用开发,不需要承受整个冰山的重量。 实现路径 结合规划设计各层面的具体实践,接下来要讲一讲我们自己的实现路径。首先,在基础设施层和平台服务层,面向公有云场景,我们的实践是基于阿里云容器服务ACK去构建在公有云场景的K8s平台。 ACK 整合了阿里云虚拟化、存储、网络和安全能力,提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。 ACK当前支持的版本为:1.22.3 和 1.20.11,仅发布Kubernetes双数号的大版本,版本支持策略如下: 集群创建:ACK支持Kubernetes两个大版本的创建,例如v1.16、v1.18。当新版本Kubernetes发布时,较老的一个版本将不再开放创建功能。 升级和运维保障:ACK保障最近的三个Kubernetes大版本的稳定运行,同时支持最新版本往前两个大版本的升级功能,例如当前最新版本为v1.20,则ACK支持v1.18、v1.16的升级功能。 工单答疑:ACK仅提供最近的三个Kubernetes大版本的技术支持。 那么,在私有云场景中,我们的建设实践是采用了VMware的一套技术架构,物理机采用DELL的PowerEdge系列。并在物理机上部署VMware ESXi,通过VMware vCenter Server将多台物理机资源组成资源池,组成虚拟化管理平台。 除此之外,在私有发布场景中,还需要去部署K8s的整个系统,我们选用了青云的KubeKey。 这款开源K8s安装器项目,可以轻松、高效、灵活地单独或整体安装 Kubernetes 和 KubeSphere。 支持的Linux 发行版本: Ubuntu 16.04, 18.04, 20.04 Debian Buster, Stretch CentOS/RHEL 7 SUSE Linux Enterprise Server 15 支持的Kubernetes 版本: v1.17: v1.17.9 v1.18: v1.18.6 v1.19: v1.19.8 v1.20: v1.20.6 v1.21: v1.21.5 (default) v1.22: v1.22.1 使用起来也比较简单,具体操作如下: 创建集群: ./kk create cluster -f config.yaml 1. 添加节点: ./kk add nodes -f config.yaml 1. 删除节点: ./kk delete node <nodeName> -f config.yaml 1. 删除集群: ./kk create cluster -f config.yaml 1. 在应用交付层,我们的实践是基于KubeVela这一引擎来做平台建设。 KubeVela 作为一个开箱即用的现代化应用交付与管理平台,使得应用在面向混合云环境中的交付更简单、快捷。使用 KubeVela 的软件开发团队,可以按需使用云原生能力构建应用。随着团队规模的发展、业务场景的变化扩展其功能,一次构建,随处运行。 KubeVela 围绕着云原生应用交付和管理场景展开,背后的应用交付模型是 Open Application Model,简称 OAM ,其核心是将应用部署所需的所有组件和各项运维动作,描述为一个统一的、与基础设施无关的“部署计划”,进而实现在混合环境中标准化和高效率的应用交付。 (编辑:信阳站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

