QCon全球软件开发大会8折优惠倒计时最后3天,购票立减¥1760!了解详情 >>> 了解详情
写点什么

2019 年容器使用报告:Docker 和 Kubernetes 优势明显

2019 年 11 月 17 日

2019年容器使用报告:Docker 和 Kubernetes 优势明显

近日,容器创业公司 Sysdig 发布了 2019 年容器使用报告。这是 Sysdig 第三年发布容器年度使用报告,与之前不同的是,今年的调查结合了更多的数据源,并深入挖掘了 Kubernetes 的使用模式。


据了解,本次调查包括了 200 多万个部署在企业生产环境中的容器使用情况,Sysdig 不但首次整合了用户的使用数据(数据来自于通过 Sysdig Secure DevOps 平台部署到的私人数据中心),而且还从 IBM Cloud 提供的 Sysdig 服务中获取到了使用情况的快照。


大家都在部署哪些容器平台?

容器运行时


根据调查结果显示:2019 年,Docker 占据了容器平台市场的大部分份额,占比为 79%,而排在第二位的是 containerd,占比为 18%,排在第三位的 CRI-O 项目,占比为 4%。这个调查结果与信通院的国内市场调查结果有异曲同工之妙,国内近六成企业选择 Docker 作为容器运行技术。


需要注意的是,containerd 是从 Docker 中剥离出来的容器虚拟化技术,CRI-O 是 Kubernetes 的轻量级运行时,最初是由 Red Hat 启动,目前由 CNCF 托管。Sysdig 预测未来 CRI-O 的使用率会不断升高,尤其是当 Red Hat OpenShift 的客户从 v3 迁移到 v4 时,因为在 v4 版本中,CRI-O 取代了原来的 Docker 引擎。


虽然容器运行时的选型各不相同,但是大家在选型时的考虑事项大多集中在开销、稳定性、可扩展性和容器注册表兼容性这几个方面。为了服务更多的用户,流行的容器平台例如 OpenShift、GKE 和 IKS 等都并行了支持多个容器运行时。


容器编排平台


根据调查结果显示,Kubernetes 一骑绝尘,占据了 77% 的份额。排在第二名的 OpenShift 和排在第五的 Rancher 其实也是基于 Kubernetes 构建的,如果把这两部分份额也合流到 Kubernetes 中,那么 Kubernetes 的份额将上升为 89%。


与去年相比,Swarm 的份额下降幅度很大,从 11% 降至 5%。而 Mesos 的市场份额稳定在 4% 左右。


本地用户和云用户分别会选择哪个编排平台?


因为企业规模、风险规避等原因,不同的企业采用的编排平台也会有所不同。根据调查结果显示,43% 的受访者会采用 Red Hat 的 OpenShift 作为本地容器编排平台,因为这样既可以享受到 Kubernetes 的优势,同时又可以使用 OpenShift 商业支持的本地 PaaS 解决方案。



如果是云用户,他们会选择哪个云平台呢?根据调查结果,73% 的受访者选择了 AWS。当然这也是有原因的,首先 AWS 在公有云领域、IaaS 领域拥有最大的市场份额,其次,Sysdig 与 AWS 有很多合作,这也在一定程度上使得 AWS 的调查结果比较靠前。


另外,这次调查还反映出另一个事实,11% 的用户是采用多云的,他们会操作和监控多个公有云中运行的容器集群。


容器的安全性

随着容器工作负载进入到生产环境中,企业开始意识到要将安全性集成到 DevOps 工作流中。为了深入了解 Kubernetes 和云原生环境中的安全性,本次调查分析了包括漏洞扫描、运行时安全性在内的相关数据。


一般来说,用户都会通过镜像扫描来识别、阻止和解决 CI/CD 管道和容器注册中心中的容器漏洞。这次 Sysdig 的调查重点关注了正在使用的顶级注册表和镜像扫描寻找漏洞时的成功率或者失败率。


容器注册中心


容器注册中心提供用于托管和管理容器映像的存储库,本次调查分为私有托管存储库和公有存储库两个维度。


根据调查结果显示,Docker 注册表是最常用的,34% 的受访者选择了它,排在第二位的是 Google GCR,28% 的受访者选择了它。另外,Sysdig 还查看了从公共存储库和私有存储库中提取的容器的百分比,比例为 2:3,使用来自公有存储库的容器镜像,往往存在缺失验证或检查安全性漏洞的风险。


镜像扫描


无论容器镜像来自哪里,在部署到生产环境之前都需要执行镜像扫描和识别已知的漏洞。为了量化漏洞风险的范围,Sysdig 对 5 天内应用在生产环境中的镜像进行了操作,其中有一半的镜像失败了,这意味着它们存在着严重程度更高的漏洞。


大家都在运行哪些服务?

容器中运行的开源解决方案 Top 10


上图中的开源解决方案覆盖范围很广,但其中每项服务都对现代应用的功能至关重要:


  • http 服务器和反向代理解决方案:NGINX 和 Apache;

  • NoSQL、关系型和内存数据库解决方案:MongoDB、Postgres 和 Redis;

  • 日志和数据分析:Elasticsearch;

  • 编程语言和框架:Node.js、Go、Java/JVM;

  • 消息代理软件:RabbitMQ。


与之前相比,这次上榜的新事物是 Node.js 和 Go。和长期霸榜的 Java 相比,Go 语言还是一个小学生,但是由于易用性,Go 语言获得了 DevOps 和云团队的青睐。Node.js 能够上榜的主要原因是简化了在服务器和浏览器上的代码编写,同时支持新一代的数据库,比如 CouchDB 和 MongoDB,支持使用 JavaScript 编写的查询。


需要注意的是,本次调查忽略了 Kubernetes 组件,如 etcd 和 fluentd,因为他们是默认部署的,几乎是每个 Kubernetes 用户的首选。


自定义监控解决方案


自定义指标的监控解决方案已经成为了监控云生产环境中应用程序的流行方法。在我们的调查中,比较主流的三种解决方案分别是 MX、StatsD 和 Prometheus,其中 Prometheus 以 46% 的占比成为使用最多的解决方案。


作为 CNCF 中最成功的开源项目之一,Prometheus 已经成为了云原生监控的代名词,被广泛应用在 Kubernetes、OpenShift 和 Istio 等项目中,同时有很多第三方解决方案也会集成 Prometheus。在 Sysdig 的用户中,Prometheus 的使用量和去年相比,增长了 130%。


容器的相关调查

针对容器,Sysdig 每年都会关注并做相关调查,调查内容不仅能够反映其对容器采用率的洞察,同时也在一定程度上反映了容器所实现的规模和效率。


企业内部的容器规模


为了了解到目前企业内部的容器规模,Sysdig 查看了每个客户在其基础设施上运行的容器数量。根据结果显示,近一半用户的容器规模在 250 个以下,同时有 9% 的用户在管理着数量超过 5000 个容器。


在很多人看来,Kubernetes 和容器已经不是新鲜事儿了,但其实很多企业都是刚刚开始实践,因此,在开始阶段,容器数量比较少也是可以理解的,相信随着 DevOps 和云团队率先使用的带头效果,会有更多的部门开始关注容器。


容器密度

根据调查结果显示,与去年相比,今年每台主机中的容器数量增加了一倍,从 2018 年的 15 个增加到了 2019 年的 30 个。2019 年,单个节点的最大密度是 250 个容器,与 2018 年相比增加了 38%


出现这种的主要原因可能是:


  • 过渡到云原生基础设施的应用程序数量不断增长;

  • 参与本地 Sysdig 客户的数据来自于更大、更密集的集群;

  • 计算马力的增加,使得更多容器能够在单个节点上运行。


虽然容器的主要目标是加速开发和部署,但是容器效率的提高,同样帮助企业提高了硬件资源的利用率,在调查中,有受访者表示:“从跨节点集群过渡到容器,延长了现有硬件的寿命。”


容器、镜像和服务寿命


容器的寿命是大家一直都很关注的话题,之前我们经常提到大多数容器的寿命可能不到一周,但是根据我们的调查,很多容器的寿命时间要更短,22% 的容器存活期只有 10 秒或者更短的时间,在一周的时间内,容器的停止率可以达到 8%。


为什么会出现这种情况呢?我们注意到了 Kubernetes 的自动缩放功能,一旦服务需求减少,Kubernetes 就会自动减少每个服务的运行实例数量,而大多数容器只需要执行一个函数,当该函数执行完成之后就会停止。秒级虽然看起来很短,但对于某些进程来说,可能就已经是任务的全部了。


Sysdig 认为短寿命容器的数量在未来还会继续增加,尤其是在适合运行短期任务的无服务器平台上。



容器镜像的寿命反映了代码发布和 CI/CD 帮助开发团队交付软件更新的时间。根据调查结果显示,超过一半的容器镜像会在一周,甚至是更短的时间内被替换,代码部署越频繁,容器镜像的更新越快。



对于企业来说,系统保持 7*24 小时的运行是很重要的,因此我们也调查了服务的正常运行时间。这里的服务主要指的是应用程序的功能组件,例如数据库软件、负载均衡器、自定义代码等等。


根据调查结果显示,超过半数的受访者的客户服务都能保持连续两周以上的不间断运行。在底层,容器可能会因为支持扩展和其它操作暂时停止,但是应用程序会一直保持运行。随着代码发布频率的增加,容器及其解决方案仍然可以平稳执行回滚或灰度发布。


报告下载链接:


https://sysdig.com/resources/papers/2019-container-usage-report/


2019 年 11 月 17 日 15:1511100
用户头像
田晓旭 InfoQ 编辑

发布了 498 篇内容, 共 237.2 次阅读, 收获喜欢 1634 次。

关注

评论 3 条评论

发布
用户头像
一个函数的容器会越来越多
2019 年 11 月 24 日 23:22
回复
用户头像
相比Sysdig的我更想看看TheNewStack的报告。
2019 年 11 月 23 日 21:23
回复
没有更多了
发现更多内容

MySQL权限管理实战!

Simon

MySQL 权限管理

女朋友问我:MySQL 事务与 MVCC 原理是怎样的?

JavaFish

Java 数据库 事务隔离级别 事务 MVCC

CTO 说要接入实时音视频 SDK,我到底该批多少预算?

融云 RongCloud

深入剖析共识性算法 Raft

vivo互联网技术

复制 选举 分布式协调 Leader Follower

那些打不垮你的,终究使你更强大

小天同学

读书 励志 个人感悟 4月日更

架构实战营模块1作业指导

华仔

#架构实战营

阿里P7手把手教你!系统学Android从零开始,内含福利

欢喜学安卓

android 程序员 面试 移动开发

重读《重构2》- 封装记录

顿晓

重构 4月日更

Flink的基石

五分钟学大数据

flink 4月日更

不为人知的网络编程(十二):彻底搞懂TCP协议层的KeepAlive保活机制

JackJiang

TCP 即时通讯 IM

GitHub面试题库+阿里巴巴2021年Java岗面试26大核心专题,成功助我砍下7家大厂Offer

Java架构追梦

Java 阿里巴巴 架构 面试 面试题总结

[转] 程序员在工作中如何做好技术积累

小江

技术管理 架构师 自我思考 个人总结

五一高铁票难抢?用RPA机器人试试!

华为云开发者社区

RPA

这个GItHub上的Java项目开源了 2021最全的Java架构面试复习指南

比伯

Java 编程 架构 面试 程序人生

用WASM连接Rust与Python | Rust 学习笔记(三)

李大狗

Python rust 狗哥 Wasm

女朋友问我:什么是 MySQL 的全局锁、表锁、行锁?

JavaFish

MySQL 数据库 锁机制 备份

技术干货 | 基于MindSpore更好的理解Focal Loss

华为云开发者社区

损失函数 mindspore Focal Loss 图像物体检测 采样

java数组打印的几种方式

Sakura

四月日更

Ubuntu 20.04 快捷键整理

TroyLiu

Linux ubuntu 效率 操作系统 快捷键

2021安擎昇腾AI服务器产品发布会在京成功举行

DT极客

手把手教大家实现一个电子签名

麦洛

Java canvas

泰山版震撼来袭!阿里巴巴Java面试参考权威指南四月版开源

Java架构追梦

Java 阿里巴巴 架构 面试 面试参考指南

新一代容器,安全容器kata-container实践

陈迪

Kubernetes 容器 原生容器Kata 容器安全 容器编排

面试官关于线程池的这个问题把我问懵逼了。

why技术

面试 Jav 1 周年盛典

专访阿里巴巴研究员吴翰清:白帽子的网络安全世界观

五分钟学大数据

网络安全 采访

华为云AI论文精读会2021第一期:高效语义分割模型Fast-SCNN分享

华为云开发者社区

AI 华为云

Flink中的状态编程

大数据技术指南

flink 4月日更

面向K8s设计误区

阿里巴巴中间件

云计算 Kubernetes 容器 分布式

回顾过去,展望未来,我在 InfoQ 写作平台的一周年!

JackTian

程序员 个人总结 4月日更 1 周年盛典 InfoQ 写作平台 1 周年

企业如何做数字化转型?想要资产状况及时把控,它的作用至关重要!

一只数据鲸鱼

数据挖掘 数字化 数据可视化 资产管理

架构思维

无心

架构

移动应用开发的下一站

移动应用开发的下一站

2019年容器使用报告:Docker 和 Kubernetes 优势明显-InfoQ