为什么 Kubernetes 将维持下一个 50 年
从 2014 年创建以来,Kubernetes 作为容器编排器的优势已被业界广泛承认。
Kubernetes 有诸多优势,接下来列表如下:
Kubernetes 为声明式,让你专注于应该发生的事情,而不是考虑如何发生;
Kubernetes 允许开发团队提供 API(即 yaml 文件)来实现关注点分离,无需担心诸如控制简单维护之类等操作问题;
Kubernetes 拥有一个庞大且快速增长的生态系统,适用于容器之上的特定领域工作流。比如,你可以使用 Kubeflow 运行机器学习工作流。
Kubernetes 支持快速开发、持续集成和部署以及高效回滚等敏捷方法。
Kubernetes 在你的开发、测试和生产环境中提供一致性。
我们接下来讨论 Kubernetes 为中小企业带来的益处。
事实上通过开源 Kubernetes,仅谷歌就让世界上的每个开发者都可以使用一流的工具,它延展了亚马逊在推出 AWS 时开始的云计算革命,而这次改进了软件方面而不是硬件方面。
我们从一个完全不同的角度来看待 Kubernetes。
Kubernetes 作为云操作系统
Kubernetes 是一个容器编排器。但容器编排器到底是什么?为了回答这个问题,让我们先回到过去。
想象一下,在 70 年代后期,你领先比尔盖茨,创建了世界上第一个用于个人计算机的操作系统。
这时候的你该怎样推广它?
也许你受先贤指引,把它称为“进程编排器”;因为这个系统允许用户同时运行多个进程并编排它们,它们运行时子进程不会相互干扰。
哦,你不喜欢这个名字?好吧,于是你也选择了叫“操作系统”这个词,并且从那以后一直持续到现在。
关键特性是,操作系统管理在同一台机器上运行的多个进程。它允许你在来自不同供应商的硬件上运行相同的应用程序。
它从软件程序开发人员那里抽象出硬件。
Kubernetes 做了以上这些,当然还有更多特性。但如今云不仅仅是整个数据中心,而硬件是像 AWS 或 GCP 这样的云服务商。
这对某些人来说听起来好像有些牵强。我也要明确一点,我肯定了不相信 Kubernetes 作为一种“云计算操作系统”会导致其它正式的操作系统(如 Linux 或 Windows)过时,后者才是正宫,肯定会继续存在。
另外,Kubernetes 集群中的每个节点仍然是在运行 Linux 系统。但是如果我们把数据中心看作为一个整体,那么它也有一个操作系统,这个操作系统便是 Kubernetes。
为什么我们需要云操作系统
我们来思考一下企业采用云的宏观原因,云计算的标准化为何如此有吸引力。
云计算的可扩展性,向上或向下、按需付费或“按使用付费”模型,这使“上云”成为大多数企业的标准解决方案。
云计算的易用性以及自助服务的能力意味着在用户侧成本更低,效率最高。
这些皆始于软硬件向虚拟化的转变,但是“容器”的概念,通过减少每个单独工作负载的间琰加速了这一过程。容器将最小计算单元减少到单个应用程序的计算单元,不再是包含所有应用程序的整个操作系统计算单元。
但是,所有容器都需要管理,就像必须管理单个机器上的进程一般。此外,底层基础设施本身须以公平有效的方式进行管理与分配。
最后,你还需要保持在不同云之间自由移动,避免供应商锁定。
以上这些,其实都是操作系统所关心的,从资源管理到调度再到硬件抽象层。
巨大的范式转变
我们以前实际见过这种情况。
当手机首次出现时,Android和iOS等移动操作系统相继出现了。在此之前,当世界从大型机转向个人计算机时,先后发明了 Windows 、macOS等其他 PC 操作系统。
在每种新的情况发生,计算范式的转变,都会导致需要一种能够满足新平台需求的新操作系统。
操作系统都提供什么?
在较高级别上,操作系统管理资源。更详细和确切地说,有磁盘、GPU 和内存等物理资源,还有文件和用户等虚拟资源。
操作系统获取所有全部资源并对其进行管理,它在不同进程之间公平有效地分配它们。
时间也是一种资源。操作系统通过集中调度程序对正在运行的进程之间分配 CPU 时间。
操作系统还负责数据进出内存的移动,它为终端服务提供了一个接口,当然,通常(尽管不总是)配备了一个图形界面来帮助操作员(或更多用户)。说到用户,操作系统管理它们的访问权限并维护安全性 。
从这个角度来看,Kubernetes OS 开始变得更有意义,因为所有这些服务都是由 Kubernetes 在你的数据中心环境中提供的。
并行的 Kubernetes 操作系统
让我们做一些名词替换,使类比更自然。
例如,我们可将 Linux 进程和线程与 Kubernetes 中的 pod 和容器进行比较,可以将 CPU 与节点进行比较。因此将进程调度到 CPU ,现在等同于将 pod 调度到节点。
Linux 的核心理念是“一切都是文件”;在 Kubernetes 中,则相当于“一切都是 etcd 中的 yaml 资源”或“一切都是 CRD”。这也是操作系统为简化用户和开发者生活,而实施的一种标准化形式。在 Linux 系统中,每个文件都使用标准 API,每个资源都以相同的方式打开和写入;在 Kubernetes 中,一切都是 etc 资源,并且也有和Linux类似的特点。
当谈到硬件抽象时,两个操作系统也有相像之处。Linux 使用驱动程序来访问不同的硬盘驱动器,而 K8S 的CSI 的工作方式则完全相同。这让用户无需担心云端磁盘的配置,可以即时访问存储设备。
展望未来
从计算机的概念出现,以及随后的操作系统出现以来的 80 多年里,我们使用计算机的方式只发生了几次重大的范式转变,但每一次都对人们的生活产生了深远的影响。
每个人都记得 Windows 和 Mac 首次面世的时间。每个人还记得智能手机何时首次与 iOS 和 Android 一同使用。现在,随着向云计算的转变,Kubernetes 正在引领类似的转变,包括系统结构。
与之前的 Windows、Linux、iOS 和 Android 一样,Kubernetes 将持续存在。
资料来源:
https://kubernetes.io/docs/concepts/overview/what-is-kubernetes
https://blog.sparkfabrik.com/en/kubernetes-key-benefits-for-companies
https://medium.com/paitech/a-brief-history-of-operating-systems-b63b1a38fcc0
作者:大雄
相关阅读: