Kubernetes 今年刚过了四周岁生日,是一项非常年轻的技术,但人们对它的采用速度很快。许多研究已经用数字或图表表明了云原生技术工具的发展趋势,但很少有人深入研究背后哪些因素影响了决策者,大家在使用这些工具的过程中有哪些困难。
因此,Heptio 委托第三方公司对各行各业的近 400 名 IT 决策者进行了调查,试图了解哪些团队/企业正在转向 Kubernetes,过程中遇到了哪些障碍以及他们如何从技术中受益。
本次调查的受访者为 378 名云原生技术部署和策略的决策者,37% 的受访者团队有 100-1000 名软件开发人员,23% 的受访者团队有超过 1000 名软件开发人员。
调查的第一个问题是受访者如何使用 Kubernetes。 60%的受访者使用 Kubernetes 进行容器编排。在明年,这个数据有望增长到 65%,而其他编排平台(Docker Swarm,Mesos 等)的使用将会减少或保持不变。
对于 Kubernetes 支持的应用程序类型,有一种常见的误解,即容器只对无状态应用程序有用。但调查结果显示,现在 Kubernetes 可用于多种应用类型,包括数据密集型分析应用,机器学习应用和物联网应用。
Kubernetes 也从整体上增加了大家对开源软件的信心。相比闭源软件,受访者更喜欢用开源平台,对于日志和监控也更倾向于使用开源解决方案。而对于负载均衡、存储等解决方案,受访者则更喜欢用闭源方案。
30% 的受访者在生产环境中使用 Kubernetes。而使用 Kubernetes 的团队中,有一半是在生产环境中使用的,并且公司规模越大越有可能如此。
对于所有在生产环境中使用容器的团队,68% 的受访者在使用 Kubernetes。这个数字是使用 Docker Swarm 的两倍。到明年,Kubernetes 将可以全面用于生产环境中的工作负载。
多云不仅是一种理念,现在已经是常用实践了。三分之二的受访者已经在采用多云策略。采用多云的原因有:能使用更好的功能,增加和云供应商的谈判资本,降低运营成本,提高性能等。
采用多云的原因
Kubernetes 天然适合多云环境。通过使用新的管理工具来提供通用的操作环境,Kubernetes 能允许在公有云或本地部署相同的应用程序。但是云提供商对多云没有什么兴趣,因此在多云环境中成功使用 Kubernetes 的关键是避免被锁定到单个供应商。
Kubernetes 这项技术还很年轻,围绕它的生态系统也还在形成过程中。Kubernetes 的功能和生态中的多种工具正在逐步演化,但步调却不一致。因此,团队在评估和运行 Kubernetes 的时候遇到了不同程度的问题。一些痛点包括:早期的设计和部署决定(47%),内部团队对通用技术的统一认识(47%),内部缺少专家资源(45%),在关键任务中保证可靠性(43%),复杂策略的管理(42%)。
看看 CNCF 的庞大的项目生态就能理解为何为 Kubernetes 做架构决策很难:项目和工具太多,团队需要指导。
对于这个问题,41% 的受访者的回答是“架构设计”。架构设计确实对很多团队都造成了困扰,因为对于架构设计有很多要考虑的地方:评估物理和软件基础设施,如何集成新技术,如何以新的方式运维等。排名第二的回答是“部署” ,仅占 16%,14% 的受访者表示在 Kubernetes 的日常管理上需要帮助。
团队寻求建议的信息源差不多,主要包括编排工具供应商(55%),独立咨询公司(42%),业内同行(54%)和相关论坛(53%)。仅有 4% 的受访者在部署 Kubernetes 的时候不需要帮助。这个结果表明,组织在寻求所需帮助时存在一定的问题。
谁在驱动 Kubernetes 的架构决策?受访者的回答有很多,包括架构团队,IT 运维团队,SRE,多功能团队,业务线,外部咨询公司等。在很多组织内部,不知道该由谁来承担对 Kubernetes 的责任。也难怪前面提到的内部团队对通用技术的统一认识是一大痛点。
调查结果还显示,大公司更倾向于使用 SRE 实践。SRE 结合了 IT 运维和软件工程师的角色职责,以确保软件的可靠性和可扩展性。
调查结果显示,采用 SRE-Ops 做决策的团队占31%,在生产环境中使用 Kubernetes 时采用了 SRE 的团队占38%,有 1000+ 开发者,并且采用 SRE 的团队占48%。
最重要的是我们相信,SRE-Ops 在必须采用 DevOps 扩展的环境中很重要。
大多数人都希望有更好的可视性(visibility),以准确了解 Kubernetes 足迹中正在发生什么。
具体来说,开发人员超过 1000 人的团队更希望对集群实时性能有更好的可视性,也更看希望能查看日志审计和检查的历史数据。
无论团队处在 Kubernetes 部署的哪个阶段,都值得看看 Kubernetes 生态系统中解决方案,考虑哪些其他功能可以帮助更好地运行 Kubernetes。
需要的能力:可视性 (58%), 简化的集群支持和恢复 (55%), 持续的一致性测试 (49%), 一体化支持和排障 (49%), 查看日志审计和检查的历史数据 (45%)
如果你的团队目前正在评估 Kubernetes,这里有一些值得参考的经验。
在生产环境中使用 Kubernetes 的受访者中,有 65% 希望对集群实时性能有更好的可视性。而在运维超过 1000 个容器的团队中,这个需求更强烈(69%)。当容器数量增加,就需要更多的集群。运营的集群越多,对可视性的需求就越强烈。
其次,访问审计日志和检查的历史记录的能力也很重要。在生产环境中运行 Kubernetes 的受访者中,65%认为这是一项关键能力。 对于这个问题,大多数受访者都认为关键在于标准化或一致性测试以及简单的备份。
克服多重困难部署 Kubernetes 值得吗?
调查结果表明很明显是值得的。在生产环境中使用 Kubernetes 的团队更容易获得以下三个好处:缩短软件开发周期,提高资源利用率,使用互补的开源技术。
对于很多团队来所,基本导向是在提高资源利用率的同时缩短软件开发周期。Kubernetes 及其相关技术和工具能帮你实现这些目标。
使用 Kubernetes 首要好处:使用互补技术,缩短软件开发周期,提高资源利用率。红色表示平均水平,黄色表示在生产中使用 Kubernetes 的水平
Kubernetes 越来越多地在生产环境中使用,围绕 Kubernetes 的整个生态系统在不断演进,新的工具和解决方案也在持续发布。现在 Kubernetes 的使用者还在努力解决一些问题,但是长期来说,潜在收益将远远抵消这些困难。
为了推进 Kubernetes 的发展,核心需求是提高可视性。 此要求体现了上游 Kubernetes 的重要性 - 建立一个独立于云的平台,以避免云供应商的锁定。这样能确保团队更好地使用一流的开源技术,并在生态系统快速变化发展之时保持最大的灵活性。
如果你正在考虑 Kubernetes 或在评估/部署过程中,可以从已经在使用 Kubernetes 的人那里得到有用的建议。使用云原生技术(包括 Kubernetes)很难,但对于那些优先考虑软件开发并希望缩短开发周期,更好地利用资源以及获得最佳开源技术的团队来说,显然是值得的。
本文根据 Heptio 的《The State of Kubernetes 2018》整理。
活动推荐
2019 年 4 月 25-27 日北京国际会议中心,QCon 与您相约获得启发,共同关注行业趋势与工程实践。点击 「阅读原文」 或识别二维码了解 QCon 十周年精心策划,早鸟 7 折立减 2640 元,有任何问题欢迎联系票务小姐姐 Ring:电话 010-53935761,微信 qcon-0410