前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除
目录
[2、Kubernetes与Docker Swarm对比](#2、Kubernetes与Docker Swarm对比)
一、Kubernetes的背景
Kubernetes 是一个应用编排器(orchestrator),主要用于对容器化的云原生微服务应用进行编排;
1、编排器
编排器是一套部署和管理应用程序的系统。它能够++部署应用,并动态地响应变化++。例如,Kubernetes包括但不仅限于以下功能;
- 部署应用程序
- 根据需要动态扩缩容
- 当出现故障时自愈
- 进行不停机的滚动升级和回滚
Kubernetes最突出的优点是:可在无干预决策下自动完成以上任务;
2、容器化应用
容器化应用就是运行在容器中的应用;
在容器技术出现之前,应用程序可以运行在物理机或虚拟机中。容器 是关于应用打包和运行方式的新的迭代,它更加快速、轻量,也比服务器或虚拟机更加适合现代的业务需求。
- 在++开放系统++(open-system)时代(大约20世纪80年代和20世纪90年代)应用运行在物理机上;
- 在++虚拟机时代++(大约2000-2010年),应用运行在虚拟机中
- 在**++云原生++**(cloud-native)时代(如今),应用运行在容器中
同时,Kubernetes也可以编排其他负载类型,包括虚拟机 和serverless功能(serverless function),不过最普遍的情况是用于容器的编排;
3、云原生应用
云原生应用是被设计用来满足现代业务需求(自动扩缩容、故自愈、滚动升级 等)并且运行在Kubernetes之上的应用;
云原生应用并非只能运行在公有云上;也可以运行在其他任何Kubernetes平台之上,甚至包括++自建数据中心++;
4、微服务应用
一个微服务应用 ,是指由许多小而专的服务组件,通过互相通信而组成的套完整的业务系统。以一个电子商务系统为例,它可能由以下功能独立的微服务组成。
- Web前端
- 分类服务
- 购物车
- 授权服务
- 日志服务
- 持久化存储
每一个单独的服务都可以被称为一个微服务。通常每个微服务都可以由不同的团队负责研发和运维,有自己的发布节奏,并独自进行扩缩容;这种构建方式正是云原生应用的一个很重要的特点;
Kubernetes可++用于部署和管理(编排)那些能够以容器的形式打包和运行(容器化)的应用++,这些应用的构建方式(云原生微服务)使它们能够根据业务需求实现扩缩容、故障自愈和在线升级。
二、Kubernetes的诞生
1、Kubernetes和Docker
Kubernetes和Docker是两个互补的技术。比如,通常人们会使用Docker进行应用的开发 ,然后用Kubernetes在生产环境中对应用进行编排;
在这样的模式中,开发者使用自己喜欢的语言编写代码,然后用Docker进行打包、测试和交付 。但是最终在测试环境或生产环境中运行的过程是由Kubernetes来完成的;
Docker是一种更偏向底层的技术,它负责启停容器的操作;而Kubernetes是一种更加偏向上层的技术,它注重集群范畴的管理,比如决定在哪个节点上运行容器、决定什么时候进行扩容缩容或升级;
发现,Docker并非唯一支持的容器运行时。事实上、Kubernetes基于一些列特性实现了对容器运行时的抽象(从而兼容不同的底层容器运行时)
- 容器运行时接口(Container Runtime Interface,CRI)是Kubernetes用来++与第三方容器运行时进行对接的标准化的抽象层++。这样容器运行时与Kubernetes是解耦的,同时又能够以一种标准化的方式子以支持。
- 运行时类(Runtime Class)是Kubernetes 1.12引入的新特性,并在1.14版中升级为beta 。它对不同的运行时进行了归类。例如,gVisor或Kata容器运行时或许比Docker和Containerd能提供更优的隔离性。
2、Kubernetes与Docker Swarm对比
3、Kubernetes与Borg
Kubernetes并非Borg或Omage的开源版本。更恰当的说是Kubernetes与Borg和Omage有着相同的基因和家族史。
三、云操作系统
Kubernetes已经成为++部署和管理云原生应用的事实上的标准平台++;类似云上的操作系统(OS);试想以下情况:
- 当在物理服务器上安装一套传统的操作系统(Linux或Windows)时,操作系统会对服务器的物理资源进行抽象,并对进程进行调动;
- 当在云上安装Kubernetes时,它会对云上的资源进行抽象,并对多种云原生微服务应用进行调度;
像Linux系统能对不同的服务硬件进行统一的抽象一样,Kubernetes也能够++对不同的私有云和共有云进行统一的抽象++。最终,只要运行Kubernetes,就不需要关心底层是运行在自建数据中心,还是边缘计算集群,抑或是共有云中了;
所以,Kubernetes能实现真正意义上的混合云,使用户跨越不同的公有云或私有云实现对负载的无缝迁移和均衡。也可在不同的云之间进行迁移,意味不会永远绑定在最初确定的云上。
1、云的规模
2、应用的调度
Kubernetes**++对云和数据中心的资源进行了管理++**;总体来说,云或数据中心就是一个包含计算、存储与网络的资源池。Kubernetes对它进行了抽象。意味着我们无须明确对应用运行在哪个节点或存储卷上进行硬编程,甚至无须关系应用运行在哪个云上;
3、简单的流程
将应用打包成容器,声明其运行方式,然后交给Kubernetes来启动它们并保持其运行状态。Kubernetes同样也提供了丰富的用来检查运行状态的工具和API;
致谢
在此,我要对所有为知识共享做出贡献的个人和机构表示最深切的感谢。同时也感谢每一位花时间阅读这篇文章的读者,如果文章中有任何错误,欢迎留言指正。
学习永无止境,让我们共同进步!!