什么是kubernetes
您可能已经注意到,每个公司和他们的狗现在都在拥抱Kubernetes 。 Amazon Web Services(AWS),IBM / Red Hat,Microsoft,VMware,此列表不胜枚举。 即使是拥有自己的容器编排程序Docker Swarm的Docker,现在也支持Kubernetes。 那么,到底是什么?为什么每个人都全神贯注呢?
随着我们继续将应用程序从服务器和虚拟机迁移到容器,Kubernetes是不可避免的。
很久以前,就在不久之前,我们仍然在服务器硬件上运行服务器程序。 然后出现了虚拟机(VM),我们可以在一个平台上运行多个操作系统和应用程序。 这使公司能够在一台服务器上运行十次或更多的服务器实例。 反过来,这使我们能够在这些VM上运行按需云,这既节省了我们的钱,又为我们提供了极大的灵活性。
但是,如果您留下了大部分VM操作系统,则可以在单个服务器上运行更多服务器程序怎么办? 这将为我们带来更多的成本节省和灵活性。 这正是容器所提供的。
[万一您错过了它: 云安全性:共享责任模型内部 ]
您会看到虚拟机管理程序(例如Hyper-V,KVM和Xen)通过仿真虚拟硬件而起作用。 这使得它们在系统需求方面“胖”。 但是,容器使用共享的操作系统。 这意味着它们比管理程序效率更高。
容器不虚拟化硬件,而是位于单个Linux实例之上。 这意味着您可以在一个小巧的胶囊中运行您的应用程序。 实际上,您可以运行的服务器应用程序实例数是在相同硬件上的VM的四到十倍。
容器还适合进行持续集成/持续部署(CI / CD) 。 这是一种开发方法,旨在鼓励开发人员尽早且经常地将其代码集成到共享存储库中,然后快速有效地部署代码。
最后,容器使开发人员能够以轻便,可移植,自给自足的程序包轻松打包,运送和运行任何应用程序,该程序包几乎可以在任何地方运行。
只有一个小问题-实际上非常大-问题。 您如何管理所有这些容器? 使用容器,单个服务器可能有数十个工作负载开始,工作和结束。 这就是Kubernetes进来的地方。
Kubernetes的历史
Kubernetes的起源起源于Google的Borg 。 它是用于Google规模的工作管理的大型内部集群管理系统。 此后不久, Google在2014年发布了第一版Kubernetes 。 最初,它的名称与博格(Borg)的《星际迷航》主题相同,被命名为“九之七 ”,但很快就被放弃了。 这个开放源代码的容器编排程序可以将容器部署到一组机器中,提供运行状况管理和复制功能,并使容器易于相互连接以及与其他程序连接。
因此,Kubernetes有两个主要优势。 得益于其Borg血统,它已经通过了全球最大的集装箱用户Google的战斗测试。 而且,通过使其开源,Kubernetes摆脱了成为Google特定程序的负担。 当2018年8月Google将Kubernetes项目的云资源移交给其新家-独立的Cloud Native Computing Platform(CNCF)时,就强调了这一点 。
自从CNCF接管Kubernetes以来,它已经从一个由Google和Red Hat贡献的项目变成了一个拥有成千上万贡献者的项目 。 一路上,它几乎消除了所有竞争。 根据开发者研究公司Red Monk的说法,仍然存在竞争者,但即使到2017年,《财富》 100强公司中有超过50%的公司使用Kubernetes作为其容器编排平台。
Kubernetes做什么
根据Google首席工程师兼Kubernetes首席架构师Brian Grant的说法-他应该知道-“ Kubernetes是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,有助于声明性配置和自动化。” 那是什么意思呢?
Kubernetes运行在Linux之上,可与Pod (一组一个或多个容器的组)一起使用,并部署到单个节点 ,物理服务器或VM。 您的命令通常通过Kubernetes的命令行配置工具kubectl发送,它定义了您的工作的元数据和规范。 这些描述由以JavaScript对象表示法(JSON)或YAML编写的声明性语句组成。 这些通过Kubernetes API描述了您要运行的应用程序,它们需要哪些容器映像以及创建集群所需状态所需的网络和存储资源。
Kubernetes主站将接受您的命令,找出如何使用可用资源来最好地运行它们,然后通过Pod生命周期事件生成器(PLEG)将行进命令中继到Pod 。 您无需担心确切的细节。 Kubernetes会找出最适合该任务的节点。 在幕后,Kubernetes分配资源并分配完成工作所需的Pod。 因此, Kubernetes可以自动设置,监视和管理容器 。
具体来说,Kubernetes使您能够完成以下任务:
- 控制和自动化应用程序部署和更新。 使用它,您可以描述已部署容器的所需状态。 然后,Kubernetes以受控的速率将容器化应用程序的实际状态更改为所需状态。 例如,您可以创建新容器,删除现有容器或更新容器的软件内容。
- 自动化容器配置。 您为Kubernetes提供了一个节点集群,可用于运行容器化任务。 然后,您告诉Kubernetes每个容器需要多少CPU和内存(RAM)。 然后,Kubernetes会自动将容器安装到您的节点上,以充分利用可用资源。 简而言之,它可以动态扩展容器化应用程序及其资源。
- 存储编排。 Kubernetes使您能够自动挂载选择的存储系统,包括本地存储,公共云提供商或存储区域网络。
- 跨节点协调容器。 容器通过使用其域名服务器(DNS)ID或IP地址公开。 如果容器流量很高,Kubernetes也可以负载均衡并分配网络流量以保持稳定性。
- 自我修复。 Kubernetes重新启动失败的容器,替换容器,杀死不响应用户定义的运行状况检查的容器,并且在容器准备好之前不将其通告给客户端。
- 安全管理。 Kubernetes允许您存储和管理身份验证数据,例如密码,OAuth令牌和SSH密钥。
综合所有这些,您将获得三大业务优势。
首先是稳定性,Kubernetes管理您的容器。 如果VM,服务器甚至群集出现故障,Kubernetes将自动启动更多容器来承载负载。
相关: Kubernetes –运行容器的平台–变得更具企业化
然后,有连续性。 Kubernetes使您可以修补应用程序或将其完全更改而不会影响您的操作。 新的容器在网上购买,而旧的容器到期,并且它们提供的服务继续运行。 IT稳定性过去完全取决于服务器的正常运行时间。 现在,借助容器和Kubernetes,一切都与服务正常运行时间有关。
一个相关的优点是弹性。 Kubernetes自动维护活动容器。 这些称为副本集 。 当Pod不能随身带走其所有容器化的应用程序时,副本集具有所需的容器,该容器已经启动并可以运行以接管负载。
简而言之,当以前的方法失败或需要大量停机时,基于Kubernetes的IT结构将与最新软件一起运行。 你不能用棍子打败它。
Kubernetes不是
听起来不错,不是吗? Kubernetes不能做任何事情。
例如,Kubernetes不是平台即服务(PaaS)系统。 Kubernetes提供了类似于PaaS的服务的构建块,但是与Cloud Foundry不同,它没有提供构建云原生应用程序所需的编程工具。 而且,尽管您当然可以在Kubernetes上构建和使用CI / CD系统,但它并不是固有的CI / CD。 另外,作为一种管理容器的方法,它不附带应用程序级别的服务,例如中间件或数据库。
正因为如此,Kubernetes发行版如此之多。 其中包括远非全面清单的Amazon Kubernetes弹性容器服务 (EKS), Azure Kubernetes服务 (AKS), Google Kubernetes引擎 (GKE), IBM Cloud Kubernetes服务 , Red Hat的OpenShift , Pivotal容器服务 (PKS)和VMware Kubernetes引擎 。 除了提供在特定云上部署Kubernetes所需的工具外,它们每个人都有其自己的特殊附加功能。
为什么Kubernetes是您的未来
随着我们继续将应用程序从服务器和虚拟机迁移到容器,Kubernetes是不可避免的。 即使使用诸如Ansible,Puppet或Salt之类的DevOps工具,对于系统管理员来说,根本也没有实际的方法来管理数百或数千个临时容器。 它需要一个专用工具,而该工具就是Kubernetes。
曾经有并且仍然有其他容器编排工具。 对于某些专业用途,它们可能对您的公司更好。 一般来说,对于大多数企业来说,Kubernetes将是默认的容器管理选择。
由于它可以跨多个平台运行,即使它们由竞争对手的云业务运行, Kubernetes也正成为混合云的流行选择 。 这并不容易。 还没。 但是许多Kubernetes发行商都在竭尽全力地提供易于部署的基于Kubernetes的混合云。 这些将使您能够执行诸如运行混合云之类的事情,该过程可将后端数据保留在私有云中,而将公共云用作前端接口。
放在一起,如果您还没有运行Kubernetes,您很快就会来。 就像Linux从根本上改变了服务器操作系统的空间,虚拟机导致了云的兴起一样,Kubernetes将引领我们进行基于容器的分布式计算。
翻译自: https://www.idginsiderpro.com/article/3452839/why-kubernetes-is-vital-for-your-business.html
什么是kubernetes