云发展历程简介:云计算->容器->容器云->kubernetes

版权声明:本文为博主原创文章,博客地址:
https://blog.csdn.net/zxy_666/article/details/80022455,未经博主允许不得转载。


前言:
在开始k8s的学习之前,我觉得能先了解一下相关的背景知识会更加有助于知识的贯通和理解。因为k8s是容器的编排(通俗点可理解为“管理”)工具,那么容器是如何产生的呢?说到这个还得涉及云计算的发展。下面将简单地讲述这一路发展过程。

本文内容摘录自《Docker容器与容器云》一书

云计算平台

云计算是什么

这个问题,众说纷纭。
· *定义为:云计算是一种基于互联网的计算新方式,通过互联网异构,自治的服务为个人和企业用户提供按需即取的计算

· IBM认为:云计算是一种新兴的IT服务交付方式,应用,数据和计算资源能够通过网络作为标准服务在灵活的价格下快速地提供给最终用户。

·有的则认为:云计算是一种资源的服务模式。该模式可以实现随时随地、便捷按需地从可配置计算资源共享池中获取所需的资源(如网络,服务器,存储,应用及服务等),资源能够快速供应并释放,大大减少了资源管理工作开销,你甚至可以不用理会那些令人头痛的传统服务供应商了。

总的来说:
云计算是一种资源的服务模式,是一种新兴的IT服务模式,能通过互联网将资源(网络,存储,计算资源,服务器,应用等)按需提供给用户。快速地资源供应和释放,不仅大大提供了资源的利用率,减少资源管理的工作开销,且提高了用户体验并大大降低其成本。

一句话总结:
云计算是通过网络将资源按需地提供给用户,提供了更好的用户体验和低廉的成本。

经典云计算架构

云发展历程简介:云计算->容器->容器云->kubernetes

经典云计算架构包括三层服务:
· IaaS:基础设施即服务
为基础设施运维人员服务,提供计算、存储、网络及其他基础资源,云平台使用者可以再上面部署包括操作系统和应用程序在内的任意软件,无需再为基础设施的管理而分心。
· PaaS:平台即服务
为应用开发人员服务,提供支撑应用运行所需的软件运行时环境、相关工具与服务,如数据库服务、日志服务、监控服务等,让应用开发者可以专注于核心业务的开发。
· SaaS:软件即服务
为一般用户服务,提供了一套完整可用的软件系统,让一般用户无需关注技术细节,只需通过浏览器、应用客户端等方式就能使用部署在云上的应用服务。

更细的架构图可参考:

云发展历程简介:云计算->容器->容器云->kubernetes

图片来自:
https://blog.csdn.net/enweitech/article/details/53405153

云计算发展产生的问题

云计算发展壮大的同时,随着计算机技术推陈出新,应用的规模愈发庞大,逻辑愈发复杂,迭代更新愈发频繁,应用开发所需的统一规范和原有开发模式杂乱无章成立追求进步的主要障碍。
IaaS的发展主要以虚拟机为最小粒度的资源调度单位,出现了资源利用率低,调度分发缓慢,软件栈环境不统一等一系列问题。PaaS在IaaS基础上发展而来,众多PaaS已经意识到可以利用容器技术解决资源利用率问题,但是PaaS通常在应用架构选择、支持的软件环境服务方面有较大的限制,这带来了应用与平台无法解耦、应用运行时环境局限性强、运维人员控制力下降的问题。

可见无论IaaS还是PaaS都有各自适用的场景,但依旧存在诸多缺陷,人们亟需一个真正可用的解决方案。在这场革命中,Docker抓住了机遇,带来了容器新革命。


Docker

docker是什么

官方定义:
Docker是以Docker容器为资源分割和调度的基本单位,封装整个运行时环境,为开发者和系统管理员设计的,用于构建、发布、和运行分布式应用的平台。它是一个跨平台,可移植并且简单易用的容器解决方案。

容器生态系统

一个软件项目成功与否的一个重要特征是能否带动一个生态系统的发展,以Docke为代表的容器技术显然做到了这一点。当然,容器技术的迅猛发展与其强大的生态系统息息相关。下面通过2张图来整体审视一下它。

云发展历程简介:云计算->容器->容器云->kubernetes

以上图片来自:https://xxbandy.github.io/2017/11/05/%E5%AE%B9%E5%99%A8%E7%94%9F%E6%80%81%E6%8A%80%E6%9C%AF/

云发展历程简介:云计算->容器->容器云->kubernetes

从图中可以看出,容器技术的生态系统自下而上分别覆盖了IaaS层和PaaS层涉及的各类问题,包括资源调度,编排,部署,监控,配置管理,存储网络管理,安全,容器化应用支撑平台等。

容器技术的好处

  • 持续部署与测试
    容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性和标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后通过封装着完整环境和应用的镜像进行迁移。由此,测试和运维人员可以直接部署软件镜像来进行测试和发布,大大简化了持续集成、测试和发布的过程。

  • 跨平台支持
    容器带来的最大好处之一就是其适配性,越来越多的云平台都支持容器,用户再也无需担心应平台的捆绑,同时也能让应用多平台混合部署成为可能。目前支持容器的IaaS平台包括但不限于亚马逊平台(AWS)、Google云平台(GCP)、微软云平台(Azure)、OpenStack等,还包括如Chef、Puppet、Ansible等配置管理工具。

  • 环境标准化和版本控制
    基于容器提供的环境一致性和标准化,你可以使用Git等工具对容器镜像进行版本控制,相比于代码的版本控制来说,你还能够对整个应用运行环境实现版本控制,一旦出现故障可以快速回滚。相比以前的虚拟机镜像,容器压缩和备份速度更快,镜像启动也像启动一个普通进行一样快速

  • 高资源利用率与隔离
    容器没有管理程序的额外开销,与底层共享操作系统,性能更加优良系统负载更低,在同等条件下可以更充分地利用系统资源。同时,容器拥有不错的资源隔离与限制能力,可以精确地对应用分配CPU和内存等资源,保证了应用间不会相互影响。

  • 容器跨平台与镜像
    linux容器虽然早在Linux 2.6版本内核已经存在,但是缺少容器的跨平台性,难以推广。容器在原有Linux容器的基础上大胆革新,为容器设定了一整套标准化的配置方法,将应用依赖的运行环境打包成镜像,真正实现了“构建一次,到处运行”的理念,大大提高了容器的跨平台性。

  • 易于理解且易用
    Docker的英文原意是集装箱码头工人,标志是鲸鱼运送一大堆集装箱,集装箱就是容器,生动好记,易于理解。一个开发者可以在15分钟内入门Docker并进行安装和部署,这是容器史上的一次飞跃。因为它的易用性,有更多的人开始关注容器技术,加速了容器标准化的步伐。

  • 应用镜像仓库
    Docker官方构建了一个镜像仓库,组织和管理形式类似于GitHub,其上已累积了成千上万的镜像,因为Docker的跨平台适配性,相当于用户提供了一个非常有用的应用商店,所有人都可以*地下载为服务组件,这为开发者提供了巨大便利。


容器云

背景:
容器为用户打开了一扇通往新世界的大门,真正进入容器的世界后,却发现新的生态系统如此庞大。在生产使用时,无论是个人还是企业,都会提出更复杂的需求。这时,我们需要众多跨主机的容器协同工作,需要支持各种类型的工作负载,企业级应用开发更是需要基于容器技术,实现支持多人协作的持续集成、持续交付平台。及时Docker只需一条命令便可启动一个容器,一旦试图将其推广到软件开发和生产环境中,麻烦便层出不穷,容器相关的网络、存储、集群、高可用等就是不得不面对的问题。从容器到容器云的进化应运而生。

容器云是什么?

容器云以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建,发布和运行分布式应用的平台。当容器云专注于资源共享与隔离、容器编排与部署,它更接近传统的IaaS;当容器云渗透到应用支撑与运行时环境时,它更接近与传统的PaaS.

容器云并不仅限与Docker,基于rkt容器的CoreOS项目也是容器云。Docker的出现让人们意识到了容器的价值,使得一直以来长期存在但并未被重视的轻量级虚拟化技术得到快速地发展和应用。

Kubernetes

简单地说kubernetes是一个管理跨主机容器化应用的系统,是一个容器的编排工具。它实现了包括应用部署、高可用管理和弹性伸缩在内的一系列基础功能,并封装成为一整套完整、简单易用的RESTful API对外提供服务。

更多关于kubernetes的介绍请期待后续文档