Kubernetes 已经成为大规模容器编排的首选。这款由 Google 开源的容器编排系统受到广泛好评和支持,发展势头迅猛。
Kubernetes 十分庞大而复杂,难以搭建和配置。不仅如此,还有很多繁重的工作留给了最终用户去做。因此,最好的方法就是不要尝试单独使用 Kubernetes,而是寻找一种将 Kubernetes 作为组件的容器解决方案。
在这里,我列出了 12 款最突出的 Kubernetes 产品,也就是整合了 Kubernetes 和容器工具的发行版,可媲美各种供应商提供的 Linux 内核版本。
请注意,此列表不包含专有云服务,如 Amazon EKS 或 Google Kubernetes Engine,我们主要关注的是可在本地运行或作为云托管服务的产品。
CoreOS 主要提供基于容器的 Linux 发行版,与 Docker 兼容,但具有自己的自定义镜像格式和运行时,以及“企业级 Kubernetes”发行版。它们一起构成了 CoreOS Tectonic 技术栈的基础。
CoreOS 的操作系统 Container Linux 主要作为一组容器化的组件进行发行。通过这种方式,操作系统的自动更新可以直接进入生产环境中,无需关闭运行中的应用程序。CoreOS 也支持“一键”更新 Kubernetes。CoreOS Tectonic 可运行在 Amazon Web Services、Microsoft Azure 和裸机上。
Canonical 是 Ubuntu Linux 的制造商,也提供了自己的 Kubernetes 发行版。Canonical 发行版的一大卖点是它以已经得到广泛推崇和部署的 Ubuntu Linux 发行版为基础。 Canonical 称它的技术栈可以在云端或本地运行,并且支持 CPU 和 GPU 两种工作负载。对于付费用户,有 Canonical 工程师来远程协助管理 Kubernetes 群集。
Canonical 和 Rancher 实验室(见下文)共同推出了 Cloud Native Platform,将 Canonical 的 Kubernetes 发行版与 Rancher 的容器管理平台组合在一起。该平台使用 Kubernetes 来管理每个集群中运行的容器,并使用 Rancher 来管理多个 Kubernetes 集群。Cloud Native Platform 将随 Rancher 2.0 一起发布,目前提供了测试预览版。
对于大多数人来说,Docker 就是容器。自 2014 年起,Docker 拥有了自己的集群和编排系统 Docker Swarm,不久前 Docker Swarm 还是 Kubernetes 的竞争对手。2017 年 10 月,Docker 宣布将 Kubernetes 作为 Docker 社区版和 Docker Enterprise 2.0 的标准插入式组件。
简而言之,Docker 公司承认 Kubernetes 比 Swarm 更适合管理大型复杂的容器环境。但是,Docker 仍然为小型作业保留了初始的集群系统(也就是“Swarm 模式”),比如部署在数量不会很大的防火墙后面的本地应用程序。
Kubernetes 的两位作者 Craig McLuckie 和 Joe Beda 共同创立了 Heptio,旨在提供基于 Kubernetes 的服务和产品。他们的第一个主要产品是 Heptio Kubernetes Subscription(HKS),一项付费的 Kubernetes 部署服务,由 Heptio 提供 24/7 全天候支持。起价为每月 2000 美元。
Heptio 的主要卖点是提供没有供应商锁定的企业级 Kubernetes。该产品可以运行在公有云或私有硬件上。Heptio 提供的所有用于管理和配置 Kubernetes 的工具都是开源的,补丁可以直接推送到受支持的集群。
Mesosphere DC/OS 使用 Apache Mesos 将一组机器变成单个资源,并可以动态分配给多个应用程序。 Kubernetes 作为 DC/OS 上众多应用程序包之一,用户可以跨 DC/OS 群集安装、运行和更新 Kubernetes。
Kubernetes 并不完全是 DC/OS 的一部分,但可以通过 DC/OS 来部署,就像 Linux 应用程序可以通过 Linux 发行版的包管理系统来管理一样,这么说来,DC/OS 本身是不是一个 Kubernetes 发行版仍然值得商榷。尽管如此,Mesosphere 在如何使用 Kubernetes 方面与 Kubernetes 的工作原理息息相关,例如,它使用 Kubernetes 的主流社区发行版来确保与现有工具集的高度兼容性。
如 Mirantis 所言,Mirantis Cloud Platform 将 OpenStack、Kubernetes 或两者的组合作为“敏捷基础设施平台”的基础。简而言之,Mirantis Cloud Platform 是一个用于编排虚拟机、容器和裸机服务器的单一集成解决方案。该平台以“DevOps 方式”管理部署在该平台上的应用程序,使用 Salt 作为配置管理工具,并集成 CI/CD 支持以确保应用程序被正确部署。
Mirantis Cloud Platform 可以直接在裸机、OpenStack 集群或公有云上运行 Kubernetes。
Mirantis 声称,Mirantis Cloud Platform 可以更容易地与 Kubernetes 集成,因为配置 Kubernetes 基础设施的相关任务不会落在最终用户身上。
大多数 Kubernetes 发行版专注于让 Kubernetes 从内到外和从上到下都易于管理。 Platform9 Managed Kubernetes 可以在任意环境中运行——本地裸机或远程的公共有云上,并可由 Platform9 的工程师作为服务进行远程管理。
在客户的监督下,Platform9 大约每六周推出一次 Managed Kubernetes 更新。 Platform9 还提供了一些功能,比如多租户用户配额,而该功能在 Kubernetes 集群中通常需要通过手动来添加。Platform9 还提供了与 Platform9 Fission 项目的集成,Fission 是一个无服务器计算服务(“函数即服务”系统),可与大多数具有容器化运行时的编程语言一起使用。
Rancher 实验室已经将 Kubernetes 集成到它的容器管理平台 Rancher 2.0 版本中,Rancher 2.0 目前处于测试阶段。相比其他 Kubernetes 发行版,Rancher 2.0 位于更上层,它位于 Linux 主机、Docker 容器和 Kubernetes 节点之上,可以独立管理所有这些节点。它甚至可以管理 Amazon EKS、Google Kubernetes Engine、Azure Container Service 和其他云端的 Kubernetes。
Rancher 也有自己的 Kubernetes 发行版。Rancher 旨在消除搭建 Kubernetes 集群和为特定环境定制 Kubernetes 所需要的苦差事,并防止这些自定义功能妨碍 Kubernetes 升级。
Red Hat 的 PaaS 产品 OpenShift 最初使用 Heroku 风格的“cartridges”来打包应用程序,然后把它们部署到名为“gear”的容器中。后来,Docker 出现了,OpenShift 进行了重写,以便利用新的容器镜像和运行时标准。Red Hat 也不可避免地将 Kubernetes 作为 OpenShift 的编配技术。
OpenShift 旨在为 PaaS 中的所有组件提供抽象和自动化。这种抽象和自动化也扩展到了 Kubernetes,因此带来了相当大的管理负担,而 OpenShift 可以用来在部署 PaaS 的过程中缓解这一点。
Hyper.sh 云服务用于运行容器,它的开发商 HyperHQ 推出了 Stackube,一个“以 Kubernetes 为中心的 OpenStack 发行版”。通常,OpenStack 使用一个名为 Nova 的组件来配置和管理计算节点,而 Stackube 使用的是 Kubernetes。除此之外,它使用的是“普通”的 OpenStack 和 Kubernetes,所有其他额外细节由 OpenStack 插件来处理。
HyperHQ 声称,Stackube 的主要优势是它可以根据使用哪个容器运行时提供不同程度的多租户。对于“软”多租户,可以使用 Docker,要想更可靠地进行资源分离,可以使用 HyperContainer,HyperContainer 提供了 Hypervisor 级别的隔离。
SUSE 以在欧洲广泛流行的 Linux 发行版而闻名,它还提供了 SUSE CaaS 平台。从概念上讲,它让人联想到 CoreOS Tectonic——捆绑运行容器的裸机“微”操作系统,将 Kubernetes 作为容器编排系统,内置镜像注册表和集群配置工具。
SUSE CaaS Platform 可以在公有云以及本地裸机上运行,但要注意,“SUSE 目前不支持任何与底层云基础设施的集成”。这意味着 SUSE CaaS Platform 的设计不是为了弥补 Amazon EKS 或 Google Kubernetes Engine 的不足,而是为了让用户可以跨多个云和数据中心运行容器。
Teleport SSH 服务器开发商 Gravitational 推出了 Telekube,这是一款在本地或远程集群上运行的“生产强化型”Kubernetes 发行版。Telekube 定位为私有 SaaS 平台解决方案,将 Kubernetes 作为跨多个区域运行的托管服务。
Telekube 上的应用程序必须能够在 Kubernetes 容器中运行。他们还必须打包成“Bundle”,然后发布到 Kubernetes 集群中。在部署基于容器的应用程序之前,需要为捆绑做一些额外的工作,不过 Telekube 唯一留给用户的任务是维护 Bundle Manifest。
活动推荐
随着业务越做越大,运维将会遇到越来越多的痛点,无论是异常检测、故障发现、瓶颈分析、自愈等工作都需要大量的智能化,AIOps 会是业务运维场景下的大势所趋,Gartner 预计在 2020 年 AIOps 的使用率将会达到 50% 甚至更高。
2018 年 7 月 6-9 日,InfoQ 将在 深圳 举行全球架构师峰会,邀请了 QQ 技术运营总监策划了“不可阻挡的 AIOps”专题,其中邀请了 Pinterest 监控组经理孟晓桥前来分享《搭建大规模高性能的时间序列大数据平台》。
联系客服