【K8S学习笔记】初识K8S 及架构组件

K8S是什么?发展历史

Kubernetes (简称 k8s)是 Google 在2014年开源的,对容器生命周期管理的开源平台,致力于对容器集群提供易于管理、高可用、弹性负载与故障转移的能力,提高服务运维自动化的能力。

最初,Google 开发了一个叫 Borg 的系统(现在命名为Omega)来调度据说有20多亿个容器和工作负载。在积累了 10 余年经验后,Google 决定重写这个容器管理系统,并将其命名为 Kubernetes 贡献给开源社区,让全世界都能因此受益。

自从开源以来,K8S迅速获得开源社区的追捧,包括RedHat、VMware、Canonical在内的有很大影响力公司加入到开发与推广的阵营。

2017年是容器生态发展历史中具有里程碑意义的一年。

在这一年,长期作为Docker竞争对手的RKT容器一派的领导者CoreOS宣布放弃自己的容器管理系统Fleet,未来将会把所有容器管理的功能移至Kubernetes之上去实现。

在这一年,容器管理领域的独角兽Rancher Labs宣布放弃其内置了数年的容器管理系统Cattle,提出了“All-in-Kubernetes”战略,从2.0版本开始把1.x版本能够支持多种容器管理工具的Rancher,“升级”为只支持Kubernetes一种容器管理系统。

在这一年,Kubernetes的主要竞争者Apache Mesos在9月正式宣布了“Kubernetes on Mesos”集成计划,由竞争关系转为对Kubernetes提供支持,使其能够与Mesos的其他一级框架(如HDFS、Spark 和Chronos,等等)进行集群资源动态共享、分配与隔离。

在这一年,Kubernetes的最大竞争者Docker Swarm的母公司Docker,终于在10月被迫宣布Docker要同时支持Swarm与Kubernetes两套容器管理系统,事实上承认了Kubernetes的统治地位。这场已经持续了三、四年时间,以Docker Swarm、Apache Mesos与Kubernetes为主要竞争者的“容器战争”终于有了明确的结果。

时至今日,K8S 已经是发展最快、市场占有率最高的容器编排系统,是业界标杆。

小结:Kubernetes是Google公司2014年开源的容器编排产品,经过多年的发展,已经成为容器编排领域的佼佼者,拥有最广大的用户群体

应用部署容器化的发展历程

要说K8S的作用,得先从容器的发展与优势讲起,大致可分为 传统部署时代、虚拟化部署时代、容器部署时代

【K8S学习笔记】初识K8S 及架构组件

传统部署时代: 早期,在物理服务器上运行应用程序。无法为物理服务器中的应用程序定义资源边界,这会导致资源分配困难与资源浪费的问题。例如,如果在物理服务器上运行多个应用程序,则可能会出现一个应用程序占用大部分资源的情况,结果可能导致其他应用程序的性能下降。一种解决方案是在不同的物理服务器上运行每个应用程序,但是由于资源利用不足而无法扩展,并且组织维护许多物理服务器的成本很高。

虚拟化部署时代: 作为解决方案,引入了虚拟化功能,它允许您在单个物理服务器的 CPU 上运行多个虚拟机(VM)。虚拟化功能允许应用程序在 VM 之间隔离,并提供安全级别,因为一个应用程序的信息不能被另一应用程序自由地访问。

因为虚拟化可以轻松地添加或更新应用程序、降低硬件成本等等,所以虚拟化可以更好地利用物理服务器中的资源,并可以实现更好的可伸缩性。

每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统,这势必也会造成资源的浪费、性能的下降

容器部署时代: 容器类似于 VM,但是它们具有轻量级的隔离属性,可以在应用程序之间共享操作系统(OS)。因此,容器被认为是轻量级的。容器与 VM 类似,具有自己的文件系统、CPU、内存、进程空间等。由于它们与基础架构分离,因此可以跨云和 OS 分发进行移植。

容器因具有许多优势而变得流行起来。下面列出了容器的一些好处

敏捷应用程序的创建和部署:与使用 VM 镜像相比,提高了容器镜像创建的简便性和效率。

持续开发、集成和部署:通过快速简单的回滚(由于镜像不可变性),提供可靠且频繁的容器镜像构建和部署。

关注开发与运维的分离:在构建/发布时而不是在部署时创建应用程序容器镜像,从而将应用程序与基础架构分离。

可观察性:不仅可以显示操作系统级别的信息和指标,还可以显示应用程序的运行状况和其他指标信号。

跨开发、测试和生产的环境一致性:在便携式计算机上与在云中相同地运行。

云和操作系统分发的可移植性:可在 Ubuntu、RHEL、CoreOS、本地、Google Kubernetes Engine 和其他任何地方运行。

以应用程序为中心的管理:提高抽象级别,从在虚拟硬件上运行 OS 到使用逻辑资源在 OS 上运行应用程序。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypdyd.html