查看原文
其他

容器在实际应用中的10个趋势

常华Andy Andy730 2024-03-16

来源:Datadog, 10 Trends in Real-World Container Use, October 2021


容器编排现在是常态。如今,几乎所有的容器都是精心编排的,超过一半的组织使用 Kubernetes。在本报告中,我们检查了数以万计的 Datadog 客户运行的超过 15 亿个容器,以了解他们如何扩展和支持其容器环境。


除了整体采用之外,编排环境也变得越来越复杂。为了支持其日益动态的应用程序,绝大多数组织都依赖于云服务商托管的服务,包括 AWS Fargate 等无服务器平台。我们还看到组织自动扩展其容器基础架构并构建有状态应用程序,这表明他们开始从编排工具及其高级功能中获益。



近 90% 的 Kubernetes 用户利用云托管服务


托管 Kubernetes 服务,如 Amazon Elastic Kubernetes Service (EKS)、Google Kubernetes Engine (GKE) 和 Azure Kubernetes Service (AKS),近年来已经实现了显著增长,并且仍然是在云中管理容器环境的标准。截至今天,近90%的Kubernetes组织使用托管服务,而不是运行自我管理集群,比去年增加了19个百分点。我们预计,随着越来越多的组织采用 Kubernetes 并利用云来构建高度可用和高性能的应用程序,这一趋势将继续下去。



Amazon ECS 用户正在转向 AWS Fargate


自 2017 年推出以来,AWS Fargate 在使用 Amazon Elastic Container Service (ECS) 的组织中采用率不断提高。在过去几年中,我们看到了从在 Amazon Elastic Compute Cloud (EC2) 上运行 ECS 工作负载到使用 AWS Fargate 启动类型的明显转变。这一趋势表明,组织越来越看到迁移到无服务器环境的价值,这与我们今年看到的无服务器采用率的增长是一致的。



每个组织的平均 Pod 数量翻了一番


使用 Kubernetes 的组织正在继续扩展其容器环境,方法是将更多主机用于运行容器,并利用更多 Pod 来支持其工作负载。在过去两年中,每个组织的平均 Pod 数量翻了一番,Kubernetes 主机的平均数量也出现了类似的相对增长。这种大幅增长表明,组织如何在 Kubernetes 上投入巨资,并将更多的基础架构和工作负载转移到容器上。



Kubernetes 上的主机密度是 Amazon ECS 上的 3 倍


平均而言,Kubernetes 组织每个主机运行 16 个 Pod,而使用 Amazon Elastic Container Service (ECS) 的组织为每个主机运行 5 个任务。在过去的一年中,这两种环境的这些数字保持一致,这表明组织正在寻找正确数量的 Pod 和任务来支持其应用程序。我们还发现,Kubernetes pod 和 ECS 任务平均运行 1.5 个容器。


主机密度的差异表明,Kubernetes 组织在 “bin packing” 或每个主机运行更多 pod 以充分利用可用资源方面变得更加高效。更高的密度也可能与我们看到的 Kubernetes 用户数量的增长有关,这些用户根据应用程序的资源消耗自动扩展其 pod。



Pod 自动扩展正变得越来越流行


Kubernetes 可以根据 Kubernetes 或其他来源报告的指标自动水平或垂直扩展 Pod,以构建高度可用且高性能的容器应用程序。大多数托管的 Kubernetes 服务,包括 Azure Kubernetes Service (AKS)、Oracle Kubernetes Engine (OKE) 和 Amazon Elastic Kubernetes Service (EKS),都提供 Horizontal Pod Autoscaler (HPA) 和 Vertical Pod Autoscaler (VPA) 功能。水平横向扩展 Pod 的总数可确保应用程序能够支持需求的波动,而垂直扩展单个 Pod 的 CPU 和内存有助于管理应用程序的整体性能和成本。我们的研究显示了一个明显的趋势:更多的 Kubernetes 组织正在自动扩展他们的 pod。横向扩展 Pod 占了大部分增长,大约 40% 的 Kubernetes 组织使用 HPA,而使用 VPA 的组织不到 1%。


HPA 的易用性可能会导致这两种方法之间的巨大差距,因为垂直扩展比更改工作负载正在运行的 Pod 的总数更困难。与 HPA 相比,VPA 也相当新,HPAs 已成为广泛使用的 Kubernetes 服务(如 Istio 和 NGINX Ingress Controller)的默认扩展方法。因此,组织更有可能在其环境中使用 HPA,但我们有兴趣了解 VPA 的使用如何随着时间的推移而增长。


我们的客户使用 Oracle Kubernetes 引擎 (OKE) 服务部署的大多数应用都面临着动态负载,并且需要以可预测的低延迟实现高可用性。我们的开发人员希望利用自动缩放和调整其应用程序大小的好处,以及拥有一致且可移植的开发环境。OKE能够水平和垂直地自动扩展Pods,这提供了所有这些好处,因此客户可以专注于开发其任务关键型应用程序,而不会造成任何中断。

—— Dan Gerrity,Oracle 开发者服务高级副总裁



组织正在容器上部署更有状态的工作负载


容器基础设施本质上是短暂的和动态的,但我们看到越来越多的组织利用Kubernetes来支持需要持久存储和持久标识的应用程序,例如数据驱动的应用程序。为此,组织正在使用 Kubernetes StatefulSets 和 Persistent Volumes (PV)。StatefulSet 负责使用唯一、稳定的标识符来调度和扩展 Pod,并可以通过持久卷声明 (PVC) 请求 PV,以便为有状态应用程序提供持久存储。


如今,组织平均使用 13 个 StatefulSet 和 28 个 PVC,这表明人们越来越依赖 Kubernetes 来支持各种工作负载,包括有状态应用程序。


自 StatefulSets 于 2017 年正式发布以来,我们一直使用它们将我们的基础架构发展为以容器为中心的模型。我们围绕以最有效的方式在开源和专有数据存储中存储大量数据来建立我们的业务。在容器中运行这些工作负载使我们能够保持成本效益和性能,同时保持开发人员体验平易近人和现代化。

—Rob Boll,Datadog 运行时基础架构工程总监



运行容器环境的组织创建更多监控(monitor)


与具有非容器环境的组织相比,具有容器环境的组织利用更多的监控来提醒团队其应用程序中的性能问题。容器环境是高度动态的,在临时 Pod 上设置监控可能不切实际、嘈杂甚至具有误导性,因为 Pod 级问题可能不会影响整体性能。将重点转移到监视服务级别性能已成为管理容器环境的最佳做法,因为它有助于构建易于复制和扩展的基础结构。


组织设置的监控数量越多,可能表明它们仍在跟踪单个 Pod 而不是服务的性能。然而,随着我们在Kubernetes的采用方面普遍看到的增长,以及自动缩放器等工具的日益普及,我们预计组织将开始将重点转移到监控服务级别性能上。


组织开始用 containerd 替换 Docker,因为他们首选的 Kubernetes 运行时Docker 在普及容器方面发挥了重要作用,并且历来是 Kubernetes 环境中最受欢迎的容器运行时。但Kubernetes最近宣布,它将弃用Dockershim(支持Docker和Kubernetes之间兼容性的基础模块)作为v1.24版本的一部分。这意味着组织必须从 Docker 迁移到 containerd 或 CRI-O,这是与 Kubernetes 容器运行时接口 (CRI) 兼容的两个运行时。


我们看到今年容器采用率增加了6%,这与Docker使用率的下降有关。这些变化是在Kubernetes宣布将Docker弃用为容器运行时后不久开始的。CRI-O几乎没有什么变化,因此我们预计,随着越来越多的组织为Kubernetes的v1.24版本做准备,容器的采用率只会随着时间的推移而增加。

 

我们已经看到许多Kubernetes用户今年迁移到Docker以外的容器运行时,并预计明年随着更多采用阻止因素的删除,迁移速度将更快。我们今天看到的最常见的采用阻止程序通常是由仍然依赖于 Docker 运行时的第三方应用和工具引起的,但最近的采用数字表明,无论如何,迁移进展顺利。我们已经看到Kubernetes专注于提供向后兼容性和流畅的迁移体验,因为它广泛用于各种规模公司的生产工作负载 - 从小型初创公司到企业。

——Sergey Kanzhelev,谷歌GKE软件工程师



OpenShift的采用正在迅速增长


红帽 OpenShift 是一个 Kubernetes 平台,可以部署为自我管理服务,也可以部署为云中的完全托管服务。虽然OpenShift可以被各种规模的组织使用,但由于其企业级安全性,开发和成本管理功能,它最受大型组织欢迎。我们的数据显示,在过去一年中,使用OpenShift的组织增加了28个百分点。这表明采用OpenShift的组织正在大力投资生态系统。


我们认为,这些发现与OpenShift的企业功能相结合,表明大型组织正在将其更多的基础设施迁移到Kubernetes。这种转变也可以归因于OpenShift对构建混合云环境的全面支持,这种支持越来越受欢迎。


Datadog的研究有助于肯定我们在共同客户中看到的趋势,特别是当他们使用容器和Kubernetes驱动的混合云平台转向更广泛的应用程序转型时。下一波转型现在包括在红帽 OpenShift 上实现现有应用的现代化,并构建各种新应用—云原生、数据分析、AI/ML、ISV 和内部应用,同时使用 Datadog 的服务带来可观察性。

—Lars Herrmann,红帽合作伙伴生态系统产品和技术副总裁



NGINX,Redis和Postgres是前三个容器映像


截至 2021 年 10 月,最受欢迎的现成容器映像包括:

  1. NGINX:NGINX继续作为最受欢迎的容器映像保持领先地位,超过50%的组织在其容器环境中使用它。

  2. Redis:这个流行的键值数据存储一直是这个名单上的常年竞争者,一直排在前三名。Redis 通常用作内存数据库、消息队列或缓存。

  3. Postgres:这个开源关系数据库仍然排在前三位,自本报告第一次迭代以来,每年都会出现在这个名单上。

  4. Elasticsearch:这个分布式数据存储和全文搜索引擎仍然是现代容器环境中部署最广泛的应用程序之一。

  5. RabbitMQ Calico (tie):RabbitMQ 是一个开源消息代理,在微服务架构中有很多用处。并列第五位的是Calico,一个开源网络解决方案。这两种技术在这次排名中首次超越了MySQL。

  6. MySQLMongoDB Kafka(并列):流行的开源关系数据库、文档存储和事件流平台今年并列第六位。

  7. GitLab:GitLab 是一个 DevOps 平台,使团队能够管理其 Git 存储库、构建 CI/CD 管道、跟踪问题等。

  8. VaultJenkins (tie):Jenkins 是一个开源自动化服务器,用于创建和管理 CI/CD 管道。Vault,用于保护和管理机密访问的HashiCorp服务也并列第八位。

  9. etcd:分布式键值存储用于跨 Docker 集群提供一致的配置。

  10. HAProxy:开源代理是TCP和HTTP负载平衡的热门选择。

  

Kubernetes StatefulSets的整体排名略有变化。Redis,Postgres,Elasticsearch和RabbitMQ仍然是最常部署的映像,但Postgres首次超越了Elasticsearch。Jenkins 也首次加入该列表,这表明 Kubernetes 开始在支持 CI/CD 管道方面发挥更大的作用。

继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存