最近 VMware 完成了对于容器技术厂商 Heptio 的收购,Heptio 由 Kubernetes 联合创始人 Joe Beda 和 Craig McLuckie 于西雅图共同创立,这两位联合创始人在 2014 年时就职于谷歌 Kubernetes 项目团队,在开发 Kubernetes 的过程中发挥了关键作用,他们也被认为是 Kubernetes 核心创始人,在 Kubernetes 社区中一直都很活跃。很多人都不太了解 Heptio,它是一家会什么样的公司?收购 Heptio 又给 VMware 带来了什么呢?
Kubernetes 和 Heptio 名字的来历
关于 Kubernetes 和 Heptio 这两个名字的来历,GeekWire 专门采访了 Craig McLuckie 和 Joe Beda。McLuckie 解释了 Kubernetes 是希腊单词 “κυβερνήτης” 的发音,意思是“舵手”和“领航员”的意思,指引着集装箱货轮 (容器 Container 的另一个含意是集装箱) 在云计算和容器应用的海洋上航行。实际上你会发现,本文中所有跟 Kubernetes 相关的开源项目的名字都是跟航海有关的概念。
Kubernetes 在开源之前是 Google 内部的一个项目,内部代号 “Borg (博格)”。博格人是第4部星际旅行系列电视剧《星际旅行:航海家号 (Star Trek: Voyager)》中的宇宙种族,是星际旅行系列中最大的反派。不知道一开始为什么取了一个反派的名字,项目组只好挑选了一个好的博格人“7/9 (Seven of Nine)”来代表这个项目。没看错, 7/9 就是这个角色的名字,她是一个加入了联邦星舰“航海家号”的博格人。
当公开 Kubernetes 项目的时候,项目组有意继续保留7这个元素,所以 Kubernetes 的图标被设计成一个7边形的舵轮。后来 Craig McLuckie 和 Joe Beda 创立 Heptio 时,他们采用了希腊词前缀 “Hept” 来延续这个主题,在希腊语里就是7的意思。除了这个前缀之外,在 Heptio 的图标中也可以看到数字7的存在,只能说这些硅谷的程序猿们太极客了。
下面是一张《星际旅行:航海家号》的海报,宣传照上的美女就是博格人 7/9,想不到她跟 Kubernetes 和 Heptio 有着这么深的渊源。
Heptio 有那些产品?
Kubernetes 总体上还是一种非常新的技术,虽然它给企业运行容器应用带来了便利,但是在整体方案上还存在很多不完善之处,例如:如何对 Kubernetes 集群进行备份以满足企业 RTO 和 RPO 的目标?如何合理地设置集群资源的访问控制权限?如何及时对 Kubernetes 环境打补丁?所以 Heptio 的主要目标就是为企业部署 Kubernetes 环境提供资询和支持服务,并且开发了一组开源工具来完善 Kubernetes 的整体解决方案。
Heptio Kubernetes Subscription
Heptio 的主打产品或者服务就是 Heptio Kubernetes Subscription (HKS),是为需要部署 Kubernetes 环境的用户提供咨询和支持服务。用户可以根据自己的需要来灵活选择 Kubernetes 平台,如:EKS (Amazon Elastic Container Service for Kubernetes) 、GKE (Google Container Engine) 、AKS (Azure Kubernetes Service),或者是现场部署的 Kubernetes 环境。Heptio 利用自己创建的一组开源工具来帮助用户管理这些 Kubernetes 集群,确保集群得到及时的补丁和更新,数据得到完整的备份,并且符合 CNCF (Cloud Native Computing Foundation) 的标准。HKS 当然也包含了技术支持服务,来回答和解决用户在部署和使用 Kubernetes 环境中遇到的各种问题,以及关于 Kubernetes 环境的最佳实践经验。
Velero (原名 Ark)
Velero 是一个云原生的灾难恢复和数据迁移工具。Velero 是最近才取的名字,它是从 Heptio Ark 改名而来的。
为什么要改名呢?因为最近才发现 Ark 这个名字已经被其他机构用掉了 (好尴尬),所以不得不另外取一个名字了。Heptio 在 Kubernetes 社区里征集了几百个名字候选,最后选中了 Velero。就这个项目的内容而言,原来的 Ark 还是比较合适的,大家看到 Ark 的中文翻译“方舟”就明白了。Velero 是西班牙语,是帆船的意思,非常符合 Kubernetes 社区的命名风格。方舟有更多灾备方面的意思,而帆船意味着它能够做更多的工作,实际上也更符合项目的实际情况,除了灾备之外它还能做数据迁移,把容器应用从一个集群迁移到另一个集群。
Kubernetes 社区也发现了 Velero 的新用途:在两个集群间克隆应用和命名空间,来创建一个临时性的开发环境。Velero 的路线图显示将于2019年下半年发布 1.0 版本,正在开发中的功能包括:为备份添加版本号、增强错误处理能力、修订文档和 API 规范等。
Contour 是一个 Kubernetes ingress controller 或者说负载均衡器,它利用了 Envoy 项目来实现负载均衡。Envoy 是由 Lyft 提供的一个开源的边缘和服务代理,以高性能、强壮性和灵活性而受到广泛欢迎。
Contour 也提供了一个新的 ingress API (IngressRoute) ,这一设计拓展了 Kubernetes 中原始 Ingress API 的功能,在弥补一些原有缺陷的同时也带来更好的用户体验。
Contour 是陆地上的等高线或海洋湖泊的等深线,也是跟导航有关的。
Sonobuoy 是一个诊断工具,它通过一致性测试 (conformance testing) 来快速了解 Kubernetes 集群的状态。一致性测试用于检查一个集群是否被正确地配置了,并且它的行为是否符合 Kubernetes 官方规定的规范。Sonobuoy 已经被云原生计算基金会 CNCF 采纳为一致性认证 (Certified Kubernetes Conformance Program) 的基础性技术,这一认证是 Kubernetes 供应商一个重要的认证。
Sonobuoy 是 Sonar (声纳) 和 Buoy (浮标) 的合成词,声纳浮标这个名字是不是很贴切?
Gimbal 是由 Heptio 和日本 Yahoo 的子公司 Actapio 合作开发的,Gimbal 也是一种负载均衡器,它主要应用于多集群的环境,它不仅支持 Kubernetes 也支持 OpenStack 平台, 所以它既能支持云原生应用,也支持传统的应用。
Gimbal 是平衡环或万向节的意思,是陀螺仪、罗盘等导航设备的基本结构。
ksconnet 是 Heptio、Box、Microsoft 和 Bitnami 合作开发的一个工具,帮助开发人员在 Kubernetes 集群中配置和部署应用。开始的时候,ksconnect 将重点放在大规模应用部署上,这是通过横跨多个应用的模式 (pattern) 来实现的。
ksconnet 是基于 JSON 的模板语言 Jsonnet 来构建的,这应该就是这个名字的由来:Jsonnet 的下一代。