本文发布已超过一年。较早的文章可能包含过时内容。请检查页面中的信息自发布以来是否已不再准确。

对 Kubernetes 的押注,来自 Red Hat 的视角

两年前,Red Hat 对 Kubernetes 下了一个大赌注。我们赌的是一个简单的想法:一个开源社区是构建应用编排未来的最佳场所,而且只有开源社区才能成功整合取得成功所需的各种能力。作为一个 Red Hat 员工,这个想法并不牵强——我们在许多社区都看到它成功应用,但我们也看到它失败,尤其是在基础不牢固的情况下支持广泛的影响力。在 Kubernetes 1.0 发布一周年,以及 Kubernetes 项目首次开源提交两年后,值得问一个问题:

押注 Kubernetes 是正确的选择吗?

软件的成功是以其用户的成功来衡量的——该软件是否为他们带来了新的机会或效率。在这方面,Kubernetes 的成功超出了我们最疯狂的梦想。我们知道有数百个真实的 Kubernetes 生产部署,包括通过 Red Hat 的多租户 OpenShift 发行版在企业中部署,在 Google Container Engine (GKE) 上部署,由一些世界上最大的软件公司运行的深度定制版本,以及通过教育、娱乐、初创公司和自己动手 (do-it-yourself) 社区。这些部署者报告称,交付时间缩短,应用生命周期标准化,资源利用率提高,应用更具弹性和健壮性。这还只是来自客户或社区贡献者的报告——如果目前野外有数千个 Kubernetes 安装管理着数万个真实应用,我也不会感到惊讶。

我相信这种影响力的广泛是 Kubernetes 基础愿景的验证:通过为分布式计算中的每个核心模式提供工具来构建一个适用于所有应用的平台。这些模式:

  • 简单的副本化 Web 软件
  • 分布式负载均衡和服务发现
  • 在容器中运行不可变镜像
  • 将相关软件共置于 Pod 中
  • 简化网络附加存储的使用
  • 灵活强大的资源调度
  • 运行批处理和计划作业以及服务工作负载
  • 管理和维护集群软件,如数据库和消息队列

使开发者和运维人员能够迈向更高层次的抽象,就像它们使得 Google 和其他技术生态系统中的参与者能够扩展到数据中心计算机及以外一样。从 Kubernetes 1.0 到 1.3,我们不断改进平台的强大性和灵活性,同时也改进了性能、可伸缩性、可靠性和可用性。基于 Kubernetes 构建的集成和工具的爆炸式增长进一步验证了其核心架构决策,即可组合性、暴露开放灵活的 API,以及刻意限制核心平台并鼓励扩展。

如今,Kubernetes 拥有开源生态系统中最大、最活跃的社区之一,拥有近千名贡献者,在 GitHub 上任何单一仓库项目中拥有最高的人类生成提交率之一,围绕 Kubernetes 有一千多个项目,以及相应活跃的 Stack Overflow 和 Slack 频道。Red Hat 很荣幸能成为这个生态系统的一部分,作为继 Google 之后对 Kubernetes 贡献最大的公司,每天都有更多的公司和个人加入我们。Kubernetes 的理念找到了肥沃的土壤,而你们,社区,提供了使其成长起来的热情和承诺。

那么,我们押对了吗?基于以上所有原因,以及数百个其他原因:是的

接下来是什么?

尽管我们对 Kubernetes 的成功感到高兴,但这绝非止步不前的时候!虽然我们还想在 Kubernetes 中构建更多功能和改进,但我认为大家普遍认为,我们要专注于唯一重要的长期目标——围绕 Kubernetes 建立一个健康、成功、蓬勃发展的技术社区。正如约翰·F·肯尼迪可能说过的:

> 不要问你的社区能为你做什么,而要问你能为你的社区做什么

在最近发布到 kubernetes-dev 邮件列表的一篇文章中,Brian Grant 提出了一个很好的近期目标集合——这些目标有助于社区成长,完善我们的执行方式,并促成未来的扩展。在每个 Kubernetes 特别兴趣小组 (Special Interest Groups, SIG) 中,我们都试图建立可持续的团队,这些团队能够跨公司和社区进行协作,并且我们正在积极努力确保每个 SIG 都能在一个项目愿景下,跨越广泛的兴趣领域进行贡献、协调和交付。

我们特别关注的是扩展的故事——Kubernetes 的核心如何成为数据中心操作系统的跳动心脏,并使更多应用管理模式能够在 Kubernetes 之上构建,而不仅仅是融入其中。在 1.2 和 1.3 版本中围绕第三方 API、API 发现、灵活的调度器策略、外部授权和认证(超出 Kubernetes 内置的功能)所做的工作仅仅是个开始。当有人有需求时,我们希望他们能够轻松找到解决方案,并且我们也希望其他人能够轻松使用和贡献该解决方案。同样,验证想法的最佳方法是针对实际需求进行原型设计,并针对实际问题进行迭代,这应该是简单而自然的。

到 Kubernetes 两岁生日时,我希望回顾漫长的一年里的完善、用户成功和社区参与。能够为 Kubernetes 贡献是一项荣幸,而且感觉我们才刚刚开始。谢谢你们,希望你们能和我一起踏上这段旅程!