云起云涌:PaaS 体系架构与运维系统上云实践

刘鹏宇
“上云”一词早已流行,各小中大企业为摆脱地域限制、减轻研发成本、实现安全可靠管理保障,纷纷研究“如何上云”。作为一个奔跑在新型IT时代的逐梦人,我踏上了寻找杰克魔豆的旅程,下面是我在探索道路上的所见所闻。

今年以来,远程办公、远程会议走进了大多数人的日常工作中,各类云产品相继被人们所熟悉,例如石墨云”OFFice”办公软件、腾讯云平台、云课堂,为实现多人协同办公、远程操控等需求,提供多类渠道。这些应用可能在实现技术上,不是严格意义的上云,但“云”逐渐浸透各个领域,晕染出不一样的风采。

“上云”一词早已流行,各小中大企业为摆脱地域限制、减轻研发成本、实现安全可靠管理保障,纷纷研究“如何上云”。作为一个奔跑在新型IT时代的逐梦人,我踏上了寻找杰克魔豆的旅程,下面是我在探索道路上的所见所闻。

开始

云计算从2006年提出至今,经历了翻天覆地的发展变化,由IaaS到PaaS、SaaS,应用越来越广泛。在其发展初期,IT建设多围绕IaaS进行,包括计算虚拟化、网络虚拟化、存储虚拟化等,使用对象主要是虚拟机。但由于虚拟机承载的是操作系统,我们依然需要在操作系统中安装基础软件,并未减轻开发人员部署环境的压力。然而自Docker为代表的容器技术出现后,实现应用可以在容器中直接运行,切实减轻了程序员部署精力,促进了容器PaaS的迅速发展,并已逐渐形成云生态体系——以Docker、Kubernetes为核心,由Docker提供应用级的主机抽象,Kubernetes提供应用级的集群抽象。在此基础上涌现了红帽OpenShift等优秀企业级PaaS产品。

本文将着重对Docker、Kubernetes、Openshift的发展历史及架构进行分析,并分享“部署自研运维系统到云平台”的实践经验。

标准化的软件构建与分发技术Docker

1.容器技术优势

前文说,容器技术的诞生,为减轻开发人员部署环境压力,提供了可能。容器技术也打造了一套标准化的软件构建和分发流程,为降低运维成本、提高软件安全和运行稳定等方面提供便利。容器技术不仅仅打造一个运输用的“集装箱”,还保证软件在容器内能够运行,在操作系统上构成“独立的箱子”。这需要解决文件系统、网络、硬件等多方面的问题。经过长时间的发展,容器技术现已逐步成熟。使用容器技术后,开发者可以使用熟悉的编程语言开发软件,之后用容器技术打包构建,便可一键运行在所有支持该容器技术的平台上。

2.容器技术的典型代表——Docker架构

Docker是一个构建、发布、运行分布式应用的平台,Docker平台整体可以看成由Docker引擎(运行环境+打包工具)、Docker Registry(API+生态系统)两部分组成。包括Docker Client、Docker daemon、Docker Image、Docker Container等部分,如下图所示。

其中Docker引擎可以分为守护进程和客户端两大部分。Docker引擎的底层是各种操作系统以及云计算基础设施,而上层则是各种应用程序和管理工具,每层之间都是通过API来通信的。详细介绍如下。

Docker Client是Docker提供命令行界面(CLI)工具,是用户与Docker进行交互的主要方式。客户端可以构建,运行和停止应用程序,还可以远程与Docker_Host进行交互。

Docker daemon是服务器组件,以Linux后台服务的方式运行,是Docker最核心的后台进程。它负责响应来自Docker Client的请求,然后将这些请求翻译成系统调用完成容器管理操作。

Docker镜像可以看作是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。

Docker容器就是Docker镜像的运行实例,是真正运行项目程序、消耗系统资源、提供服务的地方。

Docker提供了应用级的主机抽象,可以更容易地实现应用的快速申请和部署。

容器时代的舵手Kubernetes

如果说Docker是容器时代的大船,Kubernetes就是指引船只的舵手。作为容器集群管理工具,Kubernetes有一套健壮的集群自恢复机制,包括容器的自动重启、自动重调度以及自动备份甚至负载等。

1.Kubernetes的发展历程

Kubernetes前身是谷歌大规模集群管理系统Brog,它基于容器技术,实现资源管理的自动化,以及跨数据中心资源利用的最大化。Kubernetes于2015年正式对外发布,经过4年多的发展,为容器编排提供强大的解决方案,成为云原生系统的重要支撑。

当前,国内外的很多企业都建立了基于Kubernetes的云平台,如OpenShift、阿里云等。下面分别简述阿里巴巴和美团点评的云平台发展实践历程。

图片来源:阿里巴巴云原生公众号

阿里巴巴于2013年开始探索由容器替换虚拟机,2018年开始自研容器调度系统向Kubernetes转型,2019年阿里业务全面上云,2019年双十一中,基于Kubernetes的生态体系支撑了阿里史上规模最大的集群。

图片来源:about云开发-aB7758133

美团点评于2013年开始搭建云计算平台,2016年基于Docker搭建自研容器管理平台,2018年引入Kubernetes到云平台中,提升了平台的稳定性和资源使用效率。

2.Kubernetes的架构

在Kubernetes中,Service是分布式集群架构的核心。它是一种抽象概念,每一个Service后端有多个Pod,所有的容器均在Pod中运行。下图是一个典型的Kubernetes架构图。

图片来源:Kubernetes官网

Kubernetes由两种节点组成:Master节点,为管理节点;Node节点,为容器运行结点。

Service是架构的核心,提供远程服务,它的后端有多个Pod,每个容器均在Pod中运行。一个Service可以横跨多个Node,也可能一个Node里包含多个Service,一个Pod里也可以包含多个Container(容器)。

Pod是Kubernetes的最小调度单位,所以在我行实际应用中,一般一个Pod中只部署一个容器,以提高稳定性,降低风险。一个Label是一对键/值对,用来传递用户定义的属性。例如,可以用“Taihangboot”来标记一个太行应用。

Replication Controller,用来确保任意时间都有指定数量的Pod“副本”在运行。如果为某个Pod创建了Replication Controller并且指定2个副本,它会创建2个Pod,并且持续监控它们。

Kubernetes是强大的云原生体系工具,对容器进行编排,实现了集群化的管理。

企业级PaaS平台中的翘楚OpenShift

红帽OpenShift平台在Kubernetes的基础上,提高了平台运行稳定性,集成了Jeckins等工具,更易于实现Devops,可以为企业提供全面的应用上云服务。

1.OpenShift的发展历程

OpenShift是由红帽公司推出的PaaS云计算平台,它诞生于2011年,核心架构采用自研容器编排平台Gear。Kubernetes推出后,红帽决定对OpenShift进行重构。2015年6月,红帽推出了基于Kubernetes1.0的OpenShift3.0。2018年6月,OpenShift4.1发布,它与OpenShift3.0相比,较大的变化是引入了CoreOS作为默认操作系统。当前最新版本的OpenShift平台是2019年12月17日发布的4.2.11,新版系统进一步实现了混合云环境企业级服务的简化和自动化,同时可以让开发者通过云原生应用实现创新并提高业务价值。

OpenShift在Kubernetes的基础上扩展提供了软件定义网络、软件定义存储、权限管理、企业级镜像仓库、统一入口路由、持续集成流程(S2/Jenkins统一管理控制台、监控日志等功能,形成覆盖整个软件生命周期的解决方案,提供了企业级的服务支持。当前其提供三种产品:OpenShift Online、OpenShift Enterprise和OpenShift Origin。其中,OpenShift Online是面向普通开发者和小微企业的线上公有云平台;OpenShift Enterprise是面向企业的私有云平台;OpenShift Origin是一个开源项目,是构成前两个的基础。

2.OpenShift的技术架构

OpenShift平台可以安装于几乎所有的基础平台上,例如裸机、虚拟机、私有云、公有云等。整个OpenShift平台可以分为Container Storage、CoreOS、Kubernetets、Automated operations、Services等几个层级。下面分别进行介绍。

OpenShift平台可以安装于几乎所有的基础平台上,例如裸机、虚拟机、私有云、公有云等。整个OpenShift平台可以分为Container Storage、CoreOS、Kubernetets、Automated operations、Services等几个层级。下面分别进行介绍。

Container Storage是持久化的存储结构,它为整个基于容器的环境提供存储支持。CoreOS是Linux的一个发行版,提供容器执行的基础操作系统。Kubernetes即容器编排的调度平台。Automated operations指的是对于集群上运行的容器宿主机、Kubernetes集群和应用等服务,进行自动化的更新、管理等功能。Services包含平台所提供的具体服务,如集群服务(监控、扩缩容、镜像仓库、日志系统),应用服务(融合中间件、基础软件服务),Service Mesh(管理微服务应用),开发服务(开发工具、自动构建、持续集成、持续交付)等。

可以看出,OpenShift在Kubernetes的基础上,提供了底层支持,扩展了应用功能,以提供更全面、更便捷的服务。

智能运维系统上云实践

智能运维系统是一个全面的运维平台,可以实现监控相关系统的主要运行指标、发现异常后匹配应急方案、发起应急操作及验证、系统配置、用户管理等功能。

将该系统部署于OpenShift平台简要来说可分为3个步骤:创建容器、将生成的容器打好标签推送至镜像仓库、在OpenShift平台拉取镜像开始配置运行。介绍如下。

1.创建容器

通过Dockerfile来组合基础镜像和软件,Dockerfile中包含的内容包括基本镜像、要安装的软件包,要复制到容器中的软件,网络端口和挂载的存储卷等信息。编写好Dockerfile后,可通过运行docker build命令来创建一个存储在本地的容器镜像。

2.将生成的容器打好标签推送至镜像仓库

使用docker tag命令向新容器镜像添加标签,以标识其在镜像仓库的位置。然后,通过运行docker push命令将该镜像推送到镜像仓库。

3.在OpenShift平台配置运行容器

在OpenShift平台配置Deployment、Service、Router等运行策略,即可从镜像仓库拉取相关镜像,自动分配Pod,相关应用即可对外提供服务。

如上图所示即为该系统运行情况。

到此,有关云平台技术的介绍已经分享完毕。从基础容器技术Docker,到集群容器编排Kubernetes,最后到企业级PaaS平台OpenShift,云技术越来越成熟,并逐步形成生态体系。云原生应用体系对于Devops、微服务等的实现也具有天然的优势,在持续集成、持续部署上更加高效、安全,极大的提高了生产效率,将在企业数字化转型中发挥巨大的作用。

最后

作为一个奋战在一线的运维人员,经常遇到集群扩容、环境迁移、频繁的变更等等一系列繁杂的任务与问题,处理起来费时且容易出错。在接触到云原生应用后,被其标准化、轻量、高效的运行、部署模式所吸引,感受到应用上云对运维方式带来的巨大改变,故障自愈、一键迁移、一键部署等都轻易实现,随后对各个技术的官网文档、相关书籍、网络博客进行了研究,形成了本文,希望能对未来的系统建设添砖加瓦。

THEEND

最新评论(评论仅代表用户观点)

更多
暂无评论