0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析Docker、Kubernetes、Openshift的发展历史及架构

我快闭嘴 来源:CSDN云计算 作者:刘鹏宇 2020-09-08 10:15 次阅读

今年以来,远程办公、远程会议走进了大多数人的日常工作中,各类云产品相继被人们所熟悉,例如石墨云”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的生态体系支撑了阿里史上规模最大的集群。

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

2.Kubernetes的架构

在Kubernetes中,Service是分布式集群架构的核心。它是一种抽象概念,每一个Service后端有多个Pod,所有的容器均在Pod中运行。下图是一个典型的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、微服务等的实现也具有天然的优势,在持续集成、持续部署上更加高效、安全,极大的提高了生产效率,将在企业数字化转型中发挥巨大的作用。

最后

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 云计算
    +关注

    关注

    39

    文章

    7774

    浏览量

    137357
  • 网络
    +关注

    关注

    14

    文章

    7556

    浏览量

    88733
  • 容器
    +关注

    关注

    0

    文章

    495

    浏览量

    22060
收藏 人收藏

    评论

    相关推荐

    k8s和docker区别对比,哪个更强?

    DockerKubernetes(K8s)是容器化技术的两大流行工具。Docker关注构建和打包容器,适用于本地开发和单主机管理;而K8s则提供容器编排和管理平台,适用于多主机或云环境,具备自动化
    的头像 发表于 12-11 13:55 80次阅读

    docker和k8s部署在云平台性能要求盘点

    DockerKubernetes在云平台部署时有各自的性能要求。Docker需要足够的CPU、内存和存储资源,以及快速的网络带宽和优化的镜像大小。而Kubernetes则强调集群管理
    的头像 发表于 11-05 10:47 178次阅读

    Docker运行环境安装

    作者:京东科技 林中 Docker是一个开放的平台,用于开发、发布和运行应用程序。Docker分离了应用程序和运行应用的基础设施,从而实现了软件的快速交付。利用docker提供的一系列功能,包括构建
    的头像 发表于 10-29 11:28 204次阅读

    Kubernetes集群搭建容器云需要几台服务器?

    Kubernetes集群搭建容器云需要几台服务器?至少需要4台服务器。搭建容器云所需的服务器数量以及具体的搭建步骤,会根据所选用的技术栈、业务规模、架构设计以及安全需求等因素而有所不同。以下是一个基于Kubernetes集群的容
    的头像 发表于 10-21 10:06 156次阅读

    使用Velero备份Kubernetes集群

    Velero 是 heptio 团队(被 VMWare 收购)开源的 Kubernetes 集群备份、迁移工具。
    的头像 发表于 08-05 15:43 349次阅读
    使用Velero备份<b class='flag-5'>Kubernetes</b>集群

    手动构建Docker镜像的方法

    不推荐使用docker commit命令,而应该使用更灵活、更强大的dockerfile来构建docker镜像。
    的头像 发表于 08-05 15:30 516次阅读
    手动构建<b class='flag-5'>Docker</b>镜像的方法

    risc-v的发展历史

    RISC-V的发展历史可以追溯到2006年左右,当时David Patterson和其他研究者开始探索创建一个开放和可扩展的指令集架构(ISA)。以下是RISC-V发展的主要里程碑:
    发表于 07-29 17:20

    ARM平台实现Docker容器技术

    本帖最后由 Tronlong创龙科技 于 2024-7-26 08:51 编辑 什么是Docker? (1)Docker架构Docker是一个开源的应用容器引擎,让开发者可打包
    发表于 07-25 14:36

    ARM平台实现Docker容器技术

    本帖最后由 Tronlong创龙科技 于 2024-7-19 16:50 编辑 什么是Docker? (1)Docker架构Docker是一个开源的应用容器引擎,让开发者可打包
    发表于 07-17 11:05

    Jtti:Docker会替代调虚机吗

    Docker是计算虚拟化的一种方式,和使用虚拟机进行虚拟化是类似的。由于近几年Docker技术的流行和发展。所以单独介绍一下Docker。首先先回答下面一个问题。 1.
    的头像 发表于 07-12 14:38 313次阅读
    Jtti:<b class='flag-5'>Docker</b>会替代调虚机吗

    关于Docker 的清理命令集锦

    这篇文章主要介绍了Docker 清理命令集锦,需要的朋友可以参考下 复制代码代码如下: docker kill $(docker ps -a -q)  删除所有已经停止的容器 复制代码代码如下
    的头像 发表于 06-13 15:56 371次阅读

    浅谈交换机的发展历史

      交换机作为网络通讯中的关键设备,其发展历程见证了信息技术的飞速进步和网络架构的持续优化。从早期的电路交换到现代的以太网交换,再到未来的可编程交换机,交换机的发展不仅提升了网络的速度和性能,也推动了计算机网络技术的不断革新。以
    的头像 发表于 06-06 11:05 2059次阅读

    精通Docker网络:Bridge驱动深度解析

    除了使用 docker0 网桥外,用户还可以使用自定义的网桥,然后通过 --bridge=BRIDGE 参数传递给 docker daemon。
    的头像 发表于 03-31 15:58 1438次阅读
    精通<b class='flag-5'>Docker</b>网络:Bridge驱动深度<b class='flag-5'>解析</b>

    ARM平台实现Docker容器技术

    什么是Docker? (1)Docker架构 Docker是一个开源的应用容器引擎,让开发者可打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windo
    的头像 发表于 03-07 13:48 798次阅读
    ARM平台实现<b class='flag-5'>Docker</b>容器技术

    【昉·星光 2 高性能RISC-V单板计算机体验】为 Ubuntu 安装 Docker 及常用软件

    : 获取镜像 通常来说,RISC-V 架构的开发板不能使用基于其他架构开发的镜像,下面是一些基于 RISC-V 镜像的合集:https://hub.docker.com/u/riscv64/ 安装其他常用软件 sudo ap
    发表于 02-21 17:54