如何选择合适的Kubernetes发行版?
Kubernetes是什么?
谈论Kubernetes发行版之前,不妨简要介绍一下Kubernetes。Kubernetes是一种用于容器编排的开源平台。Kubernetes使使用容器部署应用程序所需的许多任务实现自动化,包括启动和停止每个容器,以及确定集群中的哪些服务器应托管哪些容器。
Kubernetes只是市面上的几种容器编排工具之一,其他受欢迎的选择包括Docker Swarm和Mesos Marathon。不过说到容器编排,Kubernetes受到大多数人的追捧,可能也占有大多数市场份额。
Kubernetes发行版是什么?
作为一个开源项目,Kubernetes将源代码放在GitHub上,供人免费获取。谁都可以使用该源代码,下载和编译Kubernetes,并安装到自己选择的基础架构上。但大多数想要安装Kubernetes的人绝不会下载和编译源代码,原因如下:
- 费时费力:有大量的Kubernetes源代码,从头开始构建需要耗费大量的时间和精力。另外,只要你想更新安装的系统,就必须重新构建一切。
- 多个组件:Kubernetes不是单个应用程序,而是一套不同的应用程序和工具。如果你从源代码安装,就必须在你用于构建Kubernetes集群的所有服务器上分别安装这每一个组件。
- 复杂的配置:由于Kubernetes没有安装向导或自动配置脚本,因此你还得手动配置Kubernetes的各个组件。
大多数人转向Kubernetes发行版以满足容器编排需求。Kubernetes发行版是一个软件包,提供了Kubernetes的预构建版本。大多数Kubernetes发行版还提供安装工具,以简化安装过程。一些还集成了另外的软件,帮助处理监控和安全之类的任务。
从这个意义上讲,Kubernetes发行版好比Linux发行版。大多数人想要在PC或服务器上安装Linux时,他们使用提供与其他各种软件包集成的预构建Linux内核的发行版。几乎没人从头开始去下载Linux源代码。
主要的Kubernetes发行版有哪些?
从技术上讲,任何包含Kubernetes预构建版本的软件包或平台都可以算作Kubernetes发行版。就像任何人可以构建自己的Linux发行版一样,任何人可以创建Kubernetes发行版。
然而如果你希望使用Kubernetes发行版完成重要的工作,可以使用这几种主要的发行版:
OpenShift:OpenShift是一个容器化平台,包括Kubernetes以及运行、部署和管理容器所需的其他各种工具。从某种意义上来说,它是一种相对不灵活的Kubernetes发行版,因为它在用于构建完整容器化堆栈的工具和平台方面并没有给你太多的选择。另一方面,OpenShift本身随带你所需要的几乎一切工具。它将相当于提供一应俱全的Kubernetes。 OpenShift由Red Hat开发,可以在本地和云中运行。
Canonical Kubernetes:开发Ubuntu Linux的Canonical公司提供了一种功能强大且得到良好支持的Kubernetes发行版。除了要求你使用Ubuntu外,Canonical的Kubernetes发行版相对“纯粹”,因为你可以选择将其与所需的任何其他组件集成(只要你自行安装)。它可以在本地或云中运行。
谷歌Kubernetes引擎:早在其他云供应商专注于自己的编排工具时,谷歌云就已将赌注押在Kubernetes上(这并不奇怪,因为谷歌在Kubernetes项目一开始就是主要支持者)。如今,谷歌Kubernetes引擎是一种灵活又简单的Kubernetes发行版。由于它在谷歌云中运行,你不必为安装而担心。
Azure Kubernetes服务:Azure曾经将赌注押在Docker Swarm上,但是Azure Kubernetes服务(AKS)现在是Azure云中的主要编排解决方案。这是仅在云上的Kubernetes发行版。
AWS Elastic Kubernetes服务:尽管AWS云上的原始容器服务Elastic Container Service(ECS)具有自己的编排器,但AWS还提供了Elastic Kubernetes Services(EKS),它是围绕Kubernetes构建的替代方案。像AKS一样,EKS仅在云中运行。
Rancher:Rancher的容器平台现在基于Kubernetes。 Rancher的Kubernetes发行版特别着重于多集群Kubernetes部署,如果你想跨多个云部署Kubernetes或出于某些其他原因不希望使用命名空间,这可能会很有用(Kubernetes功能可让你划分单个集群服务器划分为虚拟区域)以隔离你的Kubernetes工作负载。 Rancher可以在内部,云中甚至跨基础架构(包括两者)进行工作。 Rancher与OpenShift相似之处在于,它将Kubernetes与其他各种工具集成在一起,尽管它更加灵活,因为它在确定使用哪些组件方面提供了一些选择。
结论