第一百三十一期:2019年容器使用报告:Docker 和 Kubernetes 王者地位不倒!

近日,容器创业公司 Sysdig 发布了 2019 年容器使用报告。这是 Sysdig 第三年发布容器年度使用报告,与之前不同的是,今年的调查结合了更多的数据源,并深入挖掘了 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%

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

  1. 过渡到云原生基础设施的应用程序数量不断增长;
  2. 参与本地 Sysdig 客户的数据来自于更大、更密集的集群;
  3. 计算马力的增加,使得更多容器能够在单个节点上运行。

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

容器、镜像和服务寿命

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

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

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

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

 

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

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

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期更新计算机领域知识)

阅读目录(置顶)(长期科技领域知识)

歌谣带你看java面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/424011.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flask 路由映射对于双斜线的处理 //a//b

例子 from flask import Flask import time from tornado.wsgi import WSGIContainer from tornado.httpserver import HTTPServer from tornado.ioloop import IOLoopapp Flask(__name__)app.route(//abc//a) def index():# time.sleep(5)return OKapp.route(/abc//a) def in…

⼤规模⽆监督预训练语⾔模型与应⽤(上)

文章目录1 单词作为语言模型的基本单位的缺点2 character level modeling3预训练句子向量3.1 skip-thought3.2 InferSent3.3 句子向量评价数据集4 预训练文档向量5 ELMO1 单词作为语言模型的基本单位的缺点 单词量有限,遇到没有见过的单词只能以UNK表示。 模型参数…

第一百三十二期:MySQL系列:一句SQL,MySQL是怎么工作的?

当我们在mysql窗口或者数据库连接工具中输入一句sql后,我们就可以获取到想要的数据,这中间MySQL到底是怎么工作的呢? 作者:Java架构学习交流 对于MySQL而言,其实分为客户端与服务端。 服务端,就是MySQL应…

Visual Studio 2005 Tip:编辑项目文件

原文参考自:http://blogs.msdn.com/shawnfa/archive/2006/04/26/582326.aspx很多时候我们需要手动修改VS的项目文件(.csproj/.vbproj),这时大多数人会简单的使用记事本(notepad)打开并编辑。虽然这没什么不…

transformer bert GPT(未完)

原文标题:⼤规模⽆监督预训练语⾔模型与应⽤(中) 文章目录1 transformer1.1 encoder部分1.1.1 Attention定义1.1.2 Multi-head Attention1.1.3 position-wise feed-forward networks1.1.4 positional encoding1.1.5 残差链接1.1.6 layer norm…

spring mvc学习(42):restful的编辑功能实现

上图是目录结构&#xff0c;本节是有问同学的&#xff0c;当好好总结 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

那些年用过的Redis集群架构(含面试解析)

引言 今天&#xff0c;我接到了高中同学刘有码面试失利的消息。 他面试的时候&#xff0c;身份是某知名公司的小码农一枚&#xff0c;却因为不懂自己生产上Redis是如何部署的&#xff0c;导致面试失败&#xff01; 人间惨剧&#xff0c;莫过于此。 接到他面试失利的消息&#x…

再谈BERT

三次讲到了BERT。第一次是nlp中的经典深度学习模型(二)&#xff0c;第二次是transformer & bert &GPT&#xff0c;这是第三次。 文章目录1 关于预训练模型1.1预训练概念1.2 再谈语言模型1.3 ELMo1.4 GPT2 BERT2.1 BERT特点2.2架构2.3 预训练任务2.3.1 masked language …

第一百三十三期:MySQL锁会不会,你就差看一看咯

本文章向大家介绍MySQL锁详细讲解&#xff0c;包括数据库锁基本知识、表锁、表读锁、表写锁、行锁、MVCC、事务的隔离级别、悲观锁、乐观锁、间隙锁GAP、死锁等等&#xff0c;需要的朋友可以参考一下。 作者&#xff1a;php自学中心 本文章向大家介绍MySQL锁详细讲解&#xff…

[导入][你必须知道的.NET]第十回:品味类型---值类型与引用类型(下)-应用征途...

摘要: 本文将值类型和引用类型的讨论从应用示例角度来进一步做以延伸&#xff0c;可以看作是对前两回的补充性探讨。我们从类型定义、实例创建、参数传递、类型判等、垃圾回收等几个方面来简要的对上两回的内容做以剖析&#xff0c;并以一定的IL语言和内存机制来说明&#xff0…

云开发新能力,支持 HTTP 调用 API

今天来上班打开电脑&#xff0c;总感觉微信开发文档哪里有点不太一样&#xff0c;研究了半天原来是云开发又多了神级功能——HTTP API&#xff01; HTTP API是什么&#xff1f;简单来说就是通过云开发HTTP API&#xff0c;可以不需要通过微信小程序或云开发控制台&#xff0c;就…

mac下pip install 安装只能选择python2.7的问题

mac自带python2.7。 我用brew install安装过python3:brew install python3 我安装了anaconda3。因为它自带了很多包。所以我无论是用pycharm编程还是jupyter notebook一直都用的是anaconda3带的python。 后来发现用pip install 安装的包&#xff0c;在pycharm工程中用不了。更有…

第一百三十四期:MySQL分页查询方法及优化

在MySQL中&#xff0c;分页查询一般都是使用limit子句实现&#xff0c;limit子句声明如下&#xff1a;LIMIT子句可以被用于指定 SELECT 语句返回的记录数。 作者&#xff1a;青芽草 分页查询方法&#xff1a; 在MySQL中&#xff0c;分页查询一般都是使用limit子句实现&#x…

One2One主键关联的实现

主键关联&#xff0c;产生主键的是A类&#xff0c;与A相同主键的是B类 主键对应的A类&#xff0c;hbm.xml文件与.cs文件均无任何特别&#xff0c;与单表相同 与A相同的主键B类&#xff0c; Hbm.xml文件&#xff1a; <id name"Id"column"ID"type"Gu…

scroll

因为想赶紧开始敲考核任务的&#xff0c;所以就跳着来学 1. window.pageYOffset可以获取滚动了的高度 2.转载于:https://www.cnblogs.com/lijingjaj/p/11206841.html

第一百三十五期:如何模拟一次阿里双11秒杀场景的实现?程序员必看

秒杀活动可以说在互联网上随处可见&#xff0c;从12306抢票&#xff0c;到聚划算抢购&#xff0c;我们生活的方方面面都可以看到秒杀的身影。 作者&#xff1a;IT技术管理那些事儿 秒杀活动可以说在互联网上随处可见&#xff0c;从12306抢票&#xff0c;到聚划算抢购&#xf…

什么是“中台”

“中台”概念起源于军事范畴&#xff0c;其精髓是“大平台支撑精兵作战”&#xff0c;即前线小团队作战&#xff0c;后方建设强大的火力平台和信息化指挥系统机动支撑。企业中台战略随着Supercell、阿里巴巴、腾讯、华为等国内外科技巨头的应用和宣传&#xff0c;近年来在国内被…

第一百三十六期:详细讲解 Redis 的两种安装部署方式

Redis 是一款比较常用的 NoSQL 数据库&#xff0c;我们通常使用 Redis 来做缓存&#xff0c;这是一篇关于 Redis 安装的文章&#xff0c;所以不会涉及到 Redis 的高级特性和使用场景&#xff0c;Redis 能够兼容绝大部分的 POSIX 系统。 作者&#xff1a;平头哥 Redis 是一款比…

知识图谱需要解决的问题

1 知识图谱应用场景 1、数据可视化 2、基于图谱的问答系统 3、基于图谱的关系推理 4、便捷的关系查询&#xff0c;给模型提供更多数据特征 2 知识图谱的构建 非结构化数据源中的实体识别&#xff1a;一般来说是一个sequence labeling的任务。 非结构化数据源中的关系抽取&am…

spring mvc学习(43):处理静态资源

上图是目录结构&#xff0c;本节是有问同学的&#xff0c;当好好总结 pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.…