本文来自Rancher Labs
时至今日,通过Kubernetes编排容器化应用程序已经成为绝大多数人的第一选择,Kubernetes可以帮助用户轻松实现企业级部署。但是,在安装Kubernetes之前,你还需要再了解一件事:Kubernetes发行版。绝大多数情况下,用户不会直接从源代码中安装Kubernetes,而是在软件公司和云供应商提供的众多Kubernetes发行版中进行选择。
那么,什么是Kubernetes发行版?当前又有哪些出众的Kubernetes发行版呢?
什么是Kubernetes?
在讨论Kubernetes发行版之前,我们先来回顾一下什么是Kubernetes。
Kubernetes是一个用于容器编排的开源平台,它使容器部署应用程序所需的许多任务实现了自动化,包括启动和停止单个容器,以及确定集群中的哪些服务器应当承载哪些容器。如果你还想了解更多关于Kubernetes的基础知识,欢迎查阅以下文章:
再也不用担心学不会K8S!17个K8S初学者必须掌握的知识点
Kubernetes是容器生态系统中的其中一个容器编排平台,另外两个容器编排工具分别是Docker Swarm和Mesos Marathon,在本文中我们不会详述。当我们提及容器编排平台时,我们首先想到的是Kubernetes——因为Kubernetes享有最高的市场关注度,或许还占有最大的市场份额。
什么是Kubernetes发行版?
作为一个开源项目,用户可以在GitHub上免费获取Kubernetes的源代码。任何人都可以使用这个源代码在自己选择的基础架构上下载、编排和安装Kubernetes。然而,大多数想要安装Kubernetes的人并不会选择下载和编排源代码,主要有如下三方面的原因:
费时费力:Kubernetes源代码数量非常庞大,从头开始构建它们需要花费大量的时间和精力。另外,无论你什么时候要更新安装,都必须重新构建所有内容。
多组件:Kubernetes不是单一应用程序,而是一套不同的应用程序和工具。如果你从源代码安装它,那么你必须在构建Kubernetes集群的所有服务器上分别安装这些组件。
配置复杂:由于Kubernetes没有安装向导或是自动配置脚本,因此你还必须手动配置Kubernetes的所有组件。
大多数人选择Kubernetes发行版来满足他们的容器编排需求。Kubernetes发行版是一个提供了预先构建版本的Kubernetes的软件包。大多数Kubernetes发行版还提供了安装工具,使安装过程变得更加简单。部分Kubernetes发行版还集成了其他软件,可以处理集群监控和安全性等任务。
从这个意义上讲,你可以将Kubernetes发行版看作是Linux发行版的同类。当大多数人想要在PC或是服务器上安装Linux的时候,他们使用的发行版是一个预先构建的Linux内核,该内核与各种其他软件包集成在一起。几乎没有人会选择从头下载Linux源代码。
主要的Kubernetes发行版有哪些?
从技术上看,任何包含Kubernetes预先构建版本的Kubernetes的软件包或平台都可以算作Kubernetes发行版。就像任何人都可以构建自己的Linux发行版一样,任何人都可以建立一个Kubernetes发行版。
但是,如果你希望使用Kubernetes发行版来完成重要的工作,你可以在以下几个主要的发行版中进行选择:
Rancher:Rancher容器管理平台是基于Kubernetes来构建的,多集群Kubernetes部署是Rancher的Kubernetes发行版强调的重点。如果你想跨多个云部署Kubernetes,或者由于某些原因不希望使用命名空间隔离Kubernetes工作负载,那么Rancher将是你的首选项。Rancher可以部署在本地数据中心和云上,甚至可以在包含两者的跨基础设施架构上工作。Rancher和OpenShift的相似之处在于它在Kubernetes上集成了多种工具,但Rancher更为灵活,基于Rancher你可以自由选择组件。
OpenShift:OpenShift是一个包含了Kubernetes以及其他各种运行、部署和管理容器所需工具的容器化平台。这是一个相对不太灵活的Kubernetes发行版,当你在使用工具和平台来构建完整的容器化堆栈时,它并不会给予你太多的选择。另一方面,OpenShift提供了几乎所有你可能需要的开箱即用的工具,你将获得尽可能接近完整的Kubernetes。OpenShift由Red Hat开发,可以同时在本地数据中心和云中运行。
Canonical Kubernetes:开发Ubuntu Linux的Canonical公司提供了功能强大且具有支持良好的Kubernetes发行版。除了要求你必须使用Ubuntu,Canonical的Kubernetes发行版相对“纯粹”,如果你希望安装组件,你可以将它与你所需的任何组件进行集成。它可以在本地数据中心或者云中运行。
Google Kubernetes Engine:当其他云供应商专注于自己的编排工具时,谷歌云就已经押注在Kubernetes身上了,这并不稀奇,从Kubernetes项目伊始,Google便是Kubernetes的主要支持者。如今,Google Kubernetes Engine是一种灵活且简单的Kubernetes发行版。由于它运行在谷歌云中,因此你无需担心安装问题。
Azure Kubernetes Service:Azure曾经将赌注押在Docker Swarm上,但是Azure Kubernetes Service(AKS)现在是Azure云的主要编排解决方案。这是一款仅运行在云上的Kubernetes发行版。
AWS Elastic Kubernetes Service:虽然AWS云上的容器服务Elastic Container Service(ECS)拥有自己的编排器,但AWS还提供了Elastic Kubernetes Service(EKS),这是一种围绕Kubernetes构建的替代方案。和AKS一样,EKS仅在云上运行。
结 语
Kubernetes是一个复杂的容器编排平台,并非每个人都可以消化它。但幸运的是,Kubernetes发行版可以轻松实现Kubernetes的优势,而无需自己从头开始建立Kubernetes。对于大多数用例而言,以上所提及的Kubernetes发行版是安装和运行Kubernetes最实用的解决方案。