在2018年的夏天,很明显Kubernete.S Container Orchestration平台已成为许多新的遗物客户技术战略的核心部分,无论他们在业界还是他们向客户提供的数字经验。

情况并非总是如此。最初由谷歌开发,Kubernetes是Borg项目的分支,该项目是谷歌的内部集装箱导向的集群管理系统,于2003年开始。快进15年,Kubernetes现在是其中一个历史上发展最快的开源项目。更重要的是,没有回归的迹象 - 所有主要的现代基础设施平台现在都拥有Kubernetes,来自Docker.红色的帽子亚马逊网络服务(AWS),谷歌云平台,微软Azure

Kubernetes的快速发展和平台的多样性给了公司更多的灵活性,可以根据公司的需要,以自己想要的方式和地点来运行Kubernetes。知道有这么多的方法来运行和部署Kubernetes,我们想看看数据来更好地理解团队是如何使用它的。

New Relic的客户如何使用我们的Kubernetes集成

为了理解“普通”集群可能是什么样的,我们查看了客户的使用情况New Relic的开箱即用的Kubernetes整合。虽然这些是真实的数字,但它们可能不能扩展到所有Kubernetes用户;然而,在没有大量硬数据的地区,它们代表了一个关键的数据点。

这是我们发现的:

新的遗物客户的kubernetes用法 平均
簇生 2
节点 20.
豆荚 343
容器 395.
每个群集节点 9.
每簇豆荚 161.
每个集群的容器 183.
豆荚每个节点 18.
每个节点的容器 21.
每个豆荚的容器 1

看看这些数据,可能可以有把握地说,不存在所谓的“正常”集群。我们的客户根据他们的特定需求和业务目标以不同的方式运行Kubernetes。然而,这些数据确实表明了一些关于Kubernetes部署、pods和容器以及集群本身的有趣结论。让我们深入研究这些数字,看看这意味着什么。

簇生

  • New Relic的客户平均有2个Kubernetes集群。

有两个集群的一个常见原因是将一个用于您的生产应用程序,另一个是占据一个分期和开发。使用单独的群集是最好的实践 - 特别是对于Kubernetes的早期阶段的组织采用 - 因为它允许软件组织在不影响生产的情况下进行群集配置更改测试和实验,而不会影响生产和风险的停机时间。

然而,随着客户对Kubernetes越来越有信心,我们预计他们将开始混合登台和生产环境。我们相信,组织将开始使用名称空间作为分离的手段,而不是通过集群进行分离。例如,更高级的Kubernetes用户可能会采用类似下面的设置:

  • 集成集群1-名称空间1
  • 用户验收测试集群1-名称空间2
  • 宿舍集群2.-名称空间1
  • 生产集群2.-名称空间2

虽然名称空间不一定比集群提供更强的分离,但它们提供了更灵活的资源分配方式,因为可以更改名称空间的配额,而要扩大或缩小集群,则必须添加或删除节点。这种灵活性最终将使您更有效地控制资源分配。

拥有多个集群的另一个可能原因是,这样您就可以将它们分配到特定的区域。在每个区域拥有一个集群可以提供更好的可用性和更低的延迟。如果一个地区出现问题,另一个地区可以提供备份。Kubernetes环境中的分布式区域允许您以最小的成本为客户提供较低的延迟和更好的体验。

部署

  • 普通客户有54个部署在任何给定时间运行(某些客户运行最多1,000个同时部署)。
  • 平均客户有6.5个不完整的部署。

相对较多的部署表示我们的客户正在积极打破其整体环境并朝着微服务架构移动。在传统的纪念品方法中,我们将看到单个数字中的服务总数,因此看到具有超过千段部署的客户,显示了对微服务的明确过渡。

这是最明显的含义,这是,与传统的单片环境不同,不可能知道部署的所有细节。在一条巨石中,您可以轻松跟踪部署的所有详细信息;在Kubernetes环境中,您可能不知道上次部署是什么,或者它已完成。

由于待处理或失败的豆荚,可能会发生不完整的部署;重要的是,您监控待处理或失败的POD,以确保健康的Kubernetes环境。这意味着您需要在部署中的可见性以查看状态并确保所有操作都在运行。

豆荚和容器

  • 普通客户有343个POD和396个容器。

这些数据显示,我们的大多数客户都使用“一封装每豆荚”方法,是最常见的Kubernetes用例。将豆荚作为包装器思考在单个容器周围,并且Kubernetes直接管理吊舱而不是容器。

或者,POD可以运行需要一起工作的多个容器。POD可能封装由多个共同定位容器组成的应用程序,该应用程序紧密耦合并且需要共享资源。这些共同定位的容器可以将一个单个凝聚力单位的服务 - 一个容器从共享卷提供给公众的文件,而单独的“sidecar”容器刷新或更新这些文件。POD将这些容器和存储资源作为单个可管理的实体一起包装。

另一个结论是,顾客在跑很多豆荚,使其非常难以单独跟踪它们。此外,大量的豆荚和容器会产生更多的地方,其中事情会失败。鉴于Kubernetes的复杂性,很难理解为什么这些失败发生。

94%的客户拥有从故障重新启动的容器。在任何给定的时间,客户平均有12个容器,其中与失败重启相关的问题。

单独的容器重新启动并不异常,但重新启动可能表明存在更大的问题。在正常情况下,不应发生集装箱重启;重新启动容器表明容器本身或底层主机有问题。由于Kubernetes的调度机制,当容器达到内存限制时,可能会被杀死或重新启动,从而导致服务可用性的临时中断。例如,如果一个容器达到其内存限制的100%并重新启动,那么在下次检查时,它可能达到其内存限制的30%——这可能会使Kubernetes中的资源问题很难诊断。

大量故障并重新启动是分离分期和生产环境的好理由。Kubernetes的工作原因基础架构作为代码:它的配置以及封装应用程序的POD的配置,被管理为代码。配置中的任何错误都可以传播到底层基础架构。这在生产环境中并不理想,因为它可以迅速影响您提供的客户体验。

关于Kubernetes使用的一些预测

审查客户的Kubernetes环境,提供各种用途和行业的宝贵数据点。通过这些数字,我们可以提出一些预测:

我们将看到kubernetes采用和较大的工作量增加。

随着采用的增加来增加工作负载。客户不仅将他们的整料迁移到Kubernetes,而且还在Kubernetes的顶部创建了完全新的应用程序。因此,我们可以预计平均部署规模将在未来几个月增加。

Kubernetes采用将使云采用。

云巨头对Kubernetes的普遍支持建议他们有一些东西。随着更多客户开始在容器中提供应用程序而不是虚拟机中的应用程序,他们将能够在更多云提供商中运行其应用程序,确保应用程序的高可用性版本易于构建。此外,客户还有更多机会迁移到云端已陷入困境的软件。

Kubernetes也可能只是客户制作混合多云方法的东西。Kubernetes API对所有多种环境的可移植性将用于标准化客户使用,提高生产率,并减少不同云提供商的摩擦分离应用程序。我们正在听取客户越来越关注云提供商锁定。Kubernetes提供的便携性提供了有希望的解决方案。

Kubernetes支持的平台的崛起将减轻与Kubernetes相关的复杂性。

我们的客户正在利用托管服务,例如谷歌Kubernetes引擎(GKE),Azure Kubernetes服务(部),亚马逊弹性集装箱服务(eks)。一个优点:不必安装或管理自己的Kubernetes集群是一个巨大的节省时间。

但并非所有这些平台都是公共云的。Kubernetes和Containers与路由,安全性或发现透视中的服务与服务通信有限。新兴开源项目,如istio.(得到了Lyft、IBM和谷歌等主要竞争对手的支持)通过不考虑语言的方式将许多服务对服务的通信功能整合到网络中。这服务MES.H允许开发人员专注于业务逻辑,而较少地担心应用程序本身在何处运行。我们听到越来越多的人对Istio感兴趣,并预计我们的客户群将更多地采用它。

这些预测会通过吗?在六个月内与我们一起查看左右,以便更新新的遗物客户如何使用Kubernetes。

作为新遗物的Kubernetes的产品经理,JF可帮助客户了解,故障排除,并优化其Kubernetes环境。此前,他将归档,部署,管理和自动化的全球和大规模基础设施作为电信公司的服务产品,并在开发开源网络虚拟化和分析软件中担任产品管理器。查看帖子

有兴趣为New Relic博客写作吗?亚搏体育登入网送我们一个球场!!