云计算的发展:你所不知道的Kubernetes特性
云计算的发展:你所不知道的Kubernetes特性如果你对容器化感兴趣并且关注过,可能会听过许多关于Kubernetes的事情。随着云开发的重点转移到容器,Kubernetes等这
如果你对容器化感兴趣并且关注过,可能会听过许多关于Kubernetes的事情。随着云开发的重点转移到容器,Kubernetes等这些容器相关技术已经变得大受欢迎。什么是Kubernetes?为什么这项技术很重要呢?
企业遇到的问题与挑战
目前许多企业及其客户正在寻求更灵活、更快交付、并且在私有云,混合云,甚至多云环境下都可以运行的软件及系统。
然而,许多企业面临的是不同的软件环境具有不同的限制和复杂性。 例如,如果开发团队在编写软件时考虑了某个操作系统,在其他操作系统运行时可能会遇到各种复杂的问题,对于底层硬件环境或云环境也是如此。
这些问题会在组织内部不停的造成内部冲突与消耗。开发团队可能会开发出因许多因素导致非常难以运维的软件。例如,软件迁移到新环境导致性能问题,甚至因一个小改动导致严重的问题。
容器:解决问题的方案
容器是解决方案之一。容器将软件运行时的所需依赖及运行环境全部打包在一起。这种特性将应用与底层基础架构分开。无论在哪里运行容器化应用程序,都将以相同的方式在相同的环境运行。这些特性听起来与虚拟机很像,但是有本质性的区别。
图1
如图1所示,使用虚拟化技术作为应用沙盒,就必须要由Hypervisor来负责创建虚拟机,这个虚拟机时真实存在的,并且它里面运行一个完整的GuestOS才能执行用户的应用进程。这就不可避免地带来了额外的资源消耗和占用。
而相比之下,容器化后的用户应用,却依然还是一个宿主机上的普通进程,这就意味着这些因为虚拟化而带来的性能损耗都是不存在的;另一个方面,使用linux namespace作为隔离手段的容器并不需要单独的GuestOS,这就使得容器额外的资源占用几乎可以忽略不计。
所以说,容器作为解决方案,“敏捷”和“高性能”是容器相较于虚拟机最大的优势,也是它能够在PaaS这种更细粒度的资源管理平台上大行其道的重要原因。
Kubernetes:容器的解决方案
容器听起来像是一个完美的解决方案,但使用容器也会产生一些问题。大型企业可能会产生大量容器,如何管理和部署,对所有容器化应用进行编排,这是一个非常复杂的问题。
由Google与RedHat公司共同主导的Kubernetes项目可以帮助解决这些问题。Kubernetes是一个管理,自动化和部署容器化应用的开源解决方案。
Kubernetes脱胎于Borg系统,而Borg系统一直以来都被誉为Google公司内部最强大的“秘密武器”。相对于Spanner、BigTable等相对上层的项目,Borg要承担的责任,是承载Google公司整个基础设施的核心依赖。在Google公司已经公开发表的基础设施体系论文中,Borg项目当仁不让地地位居整个基础设施技术栈的最底层。
图2
如图2,Borg和它的继任者Omega位于整个技术栈的最底层。正因这样,Borg可以说是Google最不可能开源的一个项目。而幸运的是得益于Docker项目和容器技术的风靡,它却已另外一种方式与开源社区见面,这就是Kubernetes。正式这样,Kubernetes依托着Borg的理论优势,在短短几个月内在市场中站稳了脚跟。
Kubernetes会带来的几点好处:
节约成本:Kubernetes集群以运维工作量少而闻名。企业团队不必编写自己的容器化脚本。团队成员也不必在“重新发明轮子“或者放弃共享基础设施的优势之间做出选择。还可以通过使用容器更加有效的降低硬件成本。
更短的交付周期: Kubernetes非常适合DevOps。良好的容器管理意味着只要软件运行,部署几乎总是无痛,这意味着更快部署。
IT灵活性:在现代企业中,软件可以在任意数量的私有和共享基础架构上运行。拥有容器管理解决方案意味着不必牺牲性能或进行重大调整来移动您的应用程序。您可以在任何业务需要的地方运行软件。这使团队更加灵活。
Kubernetes所擅长的,是按照用户的意愿和整个系统的规则,完全自动化的处理好容器之间的各种关系。其本质,是为用户提供一个具有普遍意义的容器编排工具。可以说,在容器云中,Kubernetes提供了一套基于容器构建分布式系统的基础依赖,其意义等同于Linux在操作系统中的地位。
本文作者:
格创东智资深工程师王文畅(转载请注明作者及来源)
-
面向5GC的容器部署及演进探讨2019-06-04