BOSH 与 PKS(Pivotal和谷歌发行的企业版Kubernetes)
在过去的一年中, Kubernetes 在容器领域可谓大放异彩,吸引了越来越多的来自企业用户的关注。Pivotal 和 VMWare 合作发布的 PKS(Pivotal Container Service)恰逢其时,将为用户带来真正企业级的 Kubernentes 集群,加速企业的数字化变革。
- PKS 是什么?
PKS 是由VMWare 和 Pivotal 合作开发,为用户提供基于 vSphere 和 VMWare Cloud 的企业级 容器集群产品。除了 VMWare 的 vSphere,NSX-T 等产品,其中还包括了开源项目 Cloud Foundry Container Runtime (CFCR)。CFCR是由 Pivotal 和 Google 合作的一个开源项目,其作用是利用 BOSH 来进行 Kubernetes 的部署和运维工作。而这正是 PKS 能为 Kubernetes 集群提供高可用等企业级特性的关键。
- PKS 为 Kubernetes 带来了什么?
众所周知,Kubernetes 作为 Docker 容器的编排管理工具,对其管理的容器集群提供了良好的高可用支持。但是 Kubernetes 目前并没有提供对其自身节点(特别是其关键节点如Master,Etcd等)的高可用支持。也就是说,一旦 Kubernetes 自身的这些关键节点出现故障,那么整个容器集群将不可用,这对于企业级的产品环境来说是不可接受的。PKS 的出现,将彻底解决这一隐患。而 PKS 之所以能做到这一点,与其中集成的 CFCR 所使用的 BOSH 有着很大的关系。
- Bosh 是什么?
Bosh 是 Cloud Foundry 的部署工具,不过它也可以用来部署其他分布式系统。例如去年 Pivotal 和 Google 公司合作发布的 Kubo(现已改名为CFCR) 项目,就可以让用户通过 Bosh 来部署 Kubernetes 集群。实际上,Bosh 本身是一套强大的部署和编排(Orchestration)工具。它的设计目标是为软件开发人员和运维人员提供一套完整的易于使用的发布、部署和维护工具。Bosh 通过自动化的方法发布、部署、升级和更新软件产品,并确保这个过程是可重复的,结果是一致的。这样通过 Bosh 我们就可以很容易的维护用于开发、测试、预演(Staging)以及最终的产品环境等多个相似的但用途不同的软件环境,而不必花过多的时间去维护他们之间的一致性。Bosh 可以从根本上保证这种一致性和可重复性。
Bosh = Borg++ (r+1=s, g+1=h)。熟悉 Kubernents 的读者可能听说过 Kubernetes 来源于 Google 的集群管理系统 Borg。Bosh 其实也源于 Borg,而且比 Kubernetes 出现的早--2010年,当时 Docker 还没有出现--在 VMWare 开发 Cloud Foundry 的两名来自 Google 的工程师受 Borg 的启发开发了 Bosh。
BOSH 的主要功能和一些常见的运维工具(例如 Chef,Puppet,Ansible等等)有些类似,但又有所不同。其主要特色如下:
- 支持多种云服务平台 (Multi-Cloud)
Bosh 可以通过各种云服务提供商接口(Cloud Provider Interface)把软件部署到不同的 IaaS 平台上,例如 AWS、GCP、Azure、vSphere、OpenStack、阿里云等等。这就使得用户避免了被某一单独平台锁定,在选择 IaaS 服务提供商的时候有更多的灵活性。而对于上层应用的开发者来说,则完全不需要关心底层 IaaS 的差异,把精力集中在应用的开发上面。
CPI 负责 IaaS 层的操作,例如创建虚拟机,分配存储等。
- 自愈 (Self Healing)
Bosh Director 实时监测虚拟机的状态,一旦发现故障,会自动进行修复。这就大大减少了运维工作。实际上,很多 Cloud Foundry 的运维人员都觉得工作比较无聊,因为大多数时间他们都无事可干,因为系统出现问题之后都会在很短的时间里自动修复,而不需要人为干预。
- 滚动更新 (Rolling Update)
软件部署上线以后,难免会因为各种原因(安全补丁、配置变更等)需要升级更新。BOSH 可以对其管理的虚拟机采用滚动更新,而不会导致服务中断。
- 完善的对高可用(HA)的支持
通过 Bosh 部署分布式系统的时候,用户可以指定每个功能节点的实例个数,并且可以把它们分布到不同的可用区(Avalability Zone,需要底层 IaaS 支持)里。这样可以避免由单一可用区故障引起的服务中断。
Bosh 的上述特点使其成为一个功能非常强大的分布式系统的部署和管理工具。利用 Bosh 来部署 和管理 Kubernetes 集群,正好可以弥补 Kubernetes 自身在高可用方面的不足,满足企业用户的复杂环境中的多样需求。
上图演示了两个由 Bosh 部署的 Kubernetes 环境,分别由不同的团队使用。每个部署由其各自的部署文件 (deployment-A 和 deployment B)定义。部署文件中指定了部署所需的网络环境以及软件版本等信息。
- 动手试验
PKS 目前尚未正式发布,不过,如果你对 CFCR 感兴趣,想亲自尝试一下的话,可以访问这个网址:https://docs-cfcr.cfapps.io/installing/,这里有详细的步骤,指导用户在不同的云环境下使用 Bosh 部署 Kubernetes。
- 总结
随着 Kubernetes 在企业环境中越来越多的应用,如何高效的部署运维 Kubernetes 将成为用户关注的重点。PKS 和 CFCR 无疑是一个很好的选择。