为什么Kubernetes对你的生意至关重要
你可能已经注意到,现在每家公司和他们的狗狗都在拥抱Kubernetes。亚马逊网络服务(AWS)、IBM/Red Hat、微软、VMware等等,不胜枚举。甚至Docker,它有自己的容器编制程序,Docker Swarm,现在也支持Kubernetes。那么,它到底是什么,为什么每个人都参与其中?
很久很久以前,我们还在服务器硬件上运行服务器程序。然后出现了虚拟机(vm),我们可以在一个平台上运行多个操作系统和应用程序。这使公司能够在一台服务器上运行10倍或更多的服务器实例。这反过来又使我们能够在这些vm上按需运行云,这既节省了我们的钱,又给了我们很大的灵活性。
但是,如果在一台服务器上可以运行更多的服务器程序,而不使用VM的大部分操作系统,情况又会如何呢?这将给我们带来更多的成本节约和灵活性。这正是集装箱所传递的。
您可以看到VM管理程序(如Hyper-V、KVM和Xen)是通过模拟虚拟硬件来工作的。这使得它们在系统需求术语中显得“臃肿”。但是,容器使用共享操作系统。这意味着它们比管理程序更有效。
与虚拟化硬件不同,容器位于单个Linux实例之上。这
你可能已经注意到,现在每家公司和他们的狗狗都在拥抱Kubernetes。亚马逊网络服务(AWS)、IBM/Red Hat、微软、VMware等等,不胜枚举。甚至Docker,它有自己的容器编制程序,Docker Swarm,现在也支持Kubernetes。那么,它到底是什么,为什么每个人都参与其中?
很久很久以前,我们还在服务器硬件上运行服务器程序。然后出现了虚拟机(vm),我们可以在一个平台上运行多个操作系统和应用程序。这使公司能够在一台服务器上运行10倍或更多的服务器实例。这反过来又使我们能够在这些vm上按需运行云,这既节省了我们的钱,又给了我们很大的灵活性。
但是,如果在一台服务器上可以运行更多的服务器程序,而不使用VM的大部分操作系统,情况又会如何呢?这将给我们带来更多的成本节约和灵活性。这正是集装箱所传递的。
[以防错过:云安全:共享责任模型内部]
您可以看到VM管理程序(如Hyper-V、KVM和Xen)是通过模拟虚拟硬件来工作的。这使得它们在系统需求术语中显得“臃肿”。但是,容器使用共享操作系统。这意味着它们比管理程序更有效。
与虚拟化硬件不同,容器位于单个Linux实例之上。这意味着您可以在一个小而整洁的容器中运行应用程序。实际上,在相同的硬件上运行服务器应用程序实例的数量是VM的四到十倍。
容器还可以用于持续集成/持续部署(CI/CD)。这是一种devops方法,旨在鼓励开发人员尽早并经常地将他们的代码集成到共享存储库中,然后快速有效地部署代码。
最后,容器使开发人员能够轻松地打包、交付和运行任何应用程序,作为轻量级、可移植、自给自足的包,它几乎可以在任何地方运行。
【顶级项目管理认证IT技能指南】
只有一个小问题——实际上是很大的问题。您如何管理所有这些容器?使用容器时,单个服务器可能有几十个工作负载开始、工作和结束。这就是Kubernetes的用武之地。
Kubernetes的起源始于谷歌作为Borg。它是一个用于google规模的作业管理的大型内部集群管理系统。2014年,谷歌发布了Kubernetes的第一个版本。最初,它被命名为《星际迷航》系列的九部电影中的七部,与博格的《星际迷航》主题保持一致,但很快就被放弃了。这个开源的容器编配程序可以将容器部署到一个机队中,提供健康管理和复制功能,并使容器之间和其他程序之间的连接更加容易。
因此,Kubernetes有两个主要的优势。由于它的博格血统,它已经被世界上最大的集装箱用户谷歌测试过。而且,通过将其开源,Kubernetes摆脱了作为一个特定于google的程序的负担。这一点在2018年8月得到了强调,当时谷歌将Kubernetes项目的云资源移交给了它的新家——独立的云本地计算平台(CNCF)。
自从CNCF接管Kubernetes之后,它就从一个由谷歌和Red Hat主导的项目变成了一个拥有数千个贡献者的项目。在这个过程中,它几乎淘汰了所有的竞争对手。市场上仍有竞争对手,但根据开发商研究公司Red Monk的数据,即使到2017年,《财富》(Fortune) 100强企业中,超过50%的企业都在使用Kubernetes作为他们的容器编配平台。
根据谷歌首席工程师和Kubernetes首席架构师Brian Grant(他应该知道)的说法,“Kubernetes是一个可移植的、可扩展的开放源码平台,用于管理容器化的工作负载和服务,它促进了声明性配置和自动化。”这意味着什么呢?
Kubernetes运行在Linux之上,使用pods(一个或多个容器的组),部署到单个节点、物理服务器或VM上。您的命令通常通过kubectl (Kubernetes的命令行配置工具)发送,它定义了您的作业的元数据和规范。这些描述由用JavaScript对象表示法(JSON)或YAML编写的声明性语句组成。它们通过Kubernetes API描述希望运行哪些应用程序、需要哪些容器映像以及需要哪些网络和存储资源来创建所需的集群状态。
Kubernetes的主人接受你的命令,计算出如何用可用的资源最好地运行它们,并通过Pod生命周期事件生成器(PLEG)将你的前进命令传递给Pod。你不必担心确切的细节。Kubernetes计算出哪些节点最适合这项任务。在幕后,Kubernetes分配资源并分配完成工作所需的吊舱。因此,Kubernetes自动设置、监视和管理容器。
具体来说,Kubernetes使您能够完成以下任务:
把所有这些放在一起,你会得到三个主要的商业优势。
首先是稳定性,Kubernetes管理您的容器。如果VM、服务器甚至集群发生故障,Kubernetes将自动启动更多的容器来承载负载。
相关:Kubernetes——运行容器的平台——正变得越来越有进取心
然后,有连续性。Kubernetes使您能够修补您的应用程序或完全更改它们而不影响您的操作。新的集装箱是在网上购买的,而旧的集装箱将到期,它们提供的服务将继续运行。IT稳定性过去完全取决于服务器的正常运行时间。现在,有了容器和Kubernetes,一切都是关于服务正常运行时间的。
一个相关的好处是弹性。Kubernetes自动维护活动容器。这些被称为复制集。当pod无法卸载所有的容器应用程序时,副本集已经准备好了所需的容器并准备好接管负载。
简而言之,当以前的方法失败或需要大量停机时间时,基于kubernets的IT结构将使用最新的软件继续运行。你不能用棍子打败它。
听起来不错,不是吗?不过,库贝内斯不能包办一切。
例如,Kubernetes不是一个平台即服务(PaaS)系统。Kubernetes为类似于paas的服务提供了构建块,但与say Cloud Foundry不同,它不提供构建云本地应用程序所需的编程工具。而且,虽然您当然可以在Kubernetes上构建和使用CI/CD系统,但它本质上并不是CI/CD。而且,作为一种管理容器的方法,它没有附带应用程序级的服务,比如中间件或数据库。
相关:Kubernetes是起点,而不是终点
正因为如此,才有这么多的Kubernetes分布。这些服务包括Amazon Kubernetes (ek)弹性容器服务、Azure Kubernetes服务(AKS)、谷歌Kubernetes引擎(GKE)、IBM Cloud Kubernetes服务、Red Hat的OpenShift、Pivotal Container Service (PKS)和VMware Kubernetes引擎。除了提供在特定的云上部署Kubernetes所需的工具之外,它们还有各自的附加功能。
随着我们继续将应用程序从服务器和虚拟机转移到容器,Kubernetes是不可避免的。对于系统管理员来说,即使使用诸如Ansible、Puppet或Salt之类的DevOps工具,也无法管理数百或数千个临时容器。它需要一个专门的工具,这个工具就是Kubernetes。
以前有,现在仍然有其他容器编制工具。对于某些特殊用途,它们可能更适合您的公司。不过,一般来说,Kubernetes将是大多数企业默认的容器管理选择。
因为Kubernetes可以跨多个平台运行,即使它们是由竞争对手的云业务运行的,Kubernetes也成为混合云的一个流行选择。这并不容易。还没有。但是,许多Kubernetes分销商正在努力并尽可能快地交付易于部署的基于Kubernetes的混合云。这将使您能够运行混合云,将后端数据保存在私有云中,而将公共云用于前端接口。
综上所述,如果你还没有经营Kubernetes,你很快就会有。正如Linux从根本上改变了服务器操作系统空间,vm导致了云的兴起,Kubernetes将带领我们走向基于容器的分布式计算。