为什么Kubernetes对企业的业务至关重要

如果将服务器应用程序通过容器移动到云平台中,则需要进行一些容器编排,Kubernetes在此将发挥重要作用。
摘要

如果将服务器应用程序通过容器移动到云平台中,则需要进行一些容器编排,Kubernetes在此将发挥重要作用。

云

人们可能已经注意到,很多企业现在都在采用Kubernetes,例如AWS、IBM/Red Hat、Microsoft、VMware等。甚至拥有自己的容器编排程序Docker Swarm的Docker现在也支持Kubernetes。那么为什么每个人都这么做?

随着越来越多的企业继续将应用程序从服务器和虚拟机迁移到容器,通常都会采用Kubernetes。

在以往,企业在服务器硬件上运行服务器程序。随后出现了虚拟机(VM),可以在一个平台上运行多个操作系统和应用程序。这使企业能够在一台服务器上运行十次或更多的服务器实例。这反过来又使企业能够在这些虚拟机之上按需运行,这既节省了成本,又带来了很大的灵活性。

企业可以在单个服务器上运行更多服务器程序,这将带来更多的成本节省和灵活性。这正是容器所提供的优势。

人们将会看到虚拟机管理程序(例如Hyper-V、KVM和Xen)通过仿真虚拟硬件而起作用。这使得它们在系统需求方面供过于求,但是,容器使用共享的操作系统。这意味着它们比管理程序效率更高。

容器并不是虚拟化硬件,而是位于单个Linux实例之上。这意味着企业可以在小容器中运行应用程序。实际上,用户可以运行的服务器应用程序实例数是在相同硬件上的虚拟化的四到十倍。

容器还适合进行持续集成(CI)/持续部署/(CD)。这是一种Devops方法,旨在鼓励开发人员尽早且经常地将其代码集成到共享存储库中,然后快速有效地部署代码。

最后,容器使开发人员能够轻松地打包、传输和运行任何应用程序,这些应用程序轻巧、可迁移、自给自足,几乎可以在任何地方运行。

那么有一个问题,就是如何管理所有这些容器?使用容器,单个服务器可能有数十个工作负载开始、工作和结束。这就是Kubernetes发挥作用的地方。

Kubernetes的发展历史

Kubernetes的起源始于谷歌公司的Borg。它是用于谷歌大规模工作管理的大型内部集群管理系统。此后不久,谷歌公司在2014年发布了第一版Kubernetes。这个开源的容器编排程序可以将容器部署到一组机器中,提供运行状况管理和复制功能,并使容器易于相互连接以及与其他程序连接。

因此,Kubernetes具有两个主要优势。得益于其Borg血统,它已经通过了全球比较大的容器用户谷歌公司的测试。而且,通过使其开源,Kubernetes摆脱了成为谷歌公司特定程序的负担。尤其是在2018年8月,谷歌公司将Kubernetes项目的云计算资源移交给了新家,即独立的云原生计算平台(CNCF)时。

自从CNCF接管Kubernetes以来,它已经从一个由谷歌公司和Red Hat公司主导的项目变成了一个拥有数千个贡献者的项目。在此期间,几乎消除了所有竞争。根据研究机构Red Monk公司的说法,目前仍然存在竞争者,但即使到2017年,名列《财富》杂志100强的50%以上的公司使用Kubernetes作为其容器编排平台。

Kubernetes可以做些什么

谷歌公司首席工程师兼Kubernetes首席架构师Brian Grant表示,“Kubernetes是一个可迁移的、可扩展的开源平台,用于管理容器化的工作负载和服务,同时促进声明性配置和自动化。”那么这意味着什么呢?

Kubernetes运行在Linux之上,可与Pod、一个或多个容器的组一起部署到单个节点,物理服务器或虚拟机。其命令通常通过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具有三大优势。

首先是稳定性,Kubernetes管理用户的容器。如果虚拟机、服务器甚至集群出现故障,Kubernetes将自动启动更多容器来承载负载。

本站推荐
热门文章
标签