近日,容器初创公司Sysdig发布了2019年容器使用报告。这是Sysdig第三年发布年度容器使用报告,与以往不同的是,今年的调查结合了更多的数据源,更深入地挖掘了Kubernetes使用模式。据了解,本次调查包括超过200万个部署在企业生产环境中的容器。Sysdig不仅首次整合了用户使用数据(数据来自通过SysdigSecureDevOps平台部署的私有数据中心),而且还从IBMCloud提供的Sysdig服务中获取了使用情况快照。大家都在部署哪个容器平台?根据容器运行时调查结果显示:2019年,Docker占据了容器平台市场的绝大部分,占比79%,containerd位居第二,占比18%。%,CRI-O项目排名第三,占比4%。本次调查结果与信通院国内市场调查结果相似。国内近60%的企业选择Docker作为容器运行技术。需要注意的是,containerd是从Docker衍生出来的容器虚拟化技术,而CRI-O是Kubernetes的轻量级运行时,最初由RedHat发起,目前由CNCF托管。Sysdig预测未来CRI-O的使用会增加,特别是当RedHatOpenShift客户从v3迁移到v4时,CRI-O将取代原来的Docker引擎。尽管容器运行时的选择各不相同,但选择容器时的大部分考虑都集中在开销、稳定性、可扩展性和容器注册表兼容性上。为了服务更多的用户,OpenShift、GKE、IKS等流行的容器平台都支持多容器运行时并行。根据容器编排平台的调查结果,Kubernetes表现最好,占据了77%的市场份额。排名第二的OpenShift和排名第五的Rancher其实都是基于Kubernetes构建的。如果将这两部分合并到Kubernetes中,那么Kubernetes的份额将上升到89%。与去年相比,Swarm的份额大幅下降,从11%降至5%。Mesos的市场份额稳定在4%左右。本地用户和云端用户会选择哪个编排平台?由于企业规模、风险规避等原因,不同的企业会采用不同的编排平台。根据调查结果,43%的受访者会采用红帽的OpenShift作为他们的本地容器编排平台,因为他们可以在使用OpenShift商业支持的本地PaaS解决方案的同时享受Kubernetes的优势。如果他们是云用户,他们会选择哪个云平台?根据调查结果,73%的受访者选择了AWS。当然,这是有原因的。首先,AWS在公有云和IaaS领域占有较大的市场份额。其次,Sysdig与AWS有很多合作,这在一定程度上也使得AWS的调查结果相对偏高。此外,本次调查还反映出11%的用户是多云的,他们会操作和监控运行在多个公有云中的容器集群。容器的安全性随着容器工作负载进入生产环境,企业意识到需要将安全性集成到DevOps工作流中。为了深入了解Kubernetes和云原生环境中的安全性,本次调查分析了相关数据,包括漏洞扫描、运行时安全性。通常,图像扫描用于识别、阻止和解决CI/CD管道和容器注册表中的容器漏洞。Sysdig调查的重点是用于查找漏洞的顶级注册表和图像扫描的成功率或失败率。容器注册表容器注册表提供用于托管和管理容器映像的存储库。本次调查分为两个维度:私有托管存储库和公共存储库。根据调查结果,Docker注册中心是最常用的,有34%的受访者选择,其次是GoogleGCR,有28%的受访者选择。此外,Sysdig还查看了从公共存储库与私有存储库中提取的容器的百分比。比例为2:3。使用来自公共存储库的容器镜像通常会面临缺少验证或检查安全漏洞的风险。镜像扫描无论容器镜像来自何处,都需要在部署到生产环境之前执行镜像扫描和识别已知漏洞。为了量化漏洞风险的范围,Sysdig运行了生产时间不到5天的图像,其中一半失败了,这意味着它们具有更高严重性的漏洞。每个人都在运行什么服务?运行在容器中的开源解决方案解决方案: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编写的查询。需要注意的是,本次调查忽略了etcd和fluentd等Kubernetes组件,因为它们是默认部署的,几乎是每个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个容器,增长了38%与2018年相比。主要原因可能是:越来越多的应用程序正在过渡到云原生基础架构;来自参与本地Sysdig客户的数据来自更大、更密集的集群;计算能力的增加使更多容器能够在单个节点上运行。虽然容器的主要目标是加速开发和部署,但容器效率的提升也有助于企业提高硬件资源的利用率。在调查中,有受访者表示:“从跨节点集群到容器的过渡,延长了硬件的寿命。”容器、镜像、服务的生命周期是大家一直关注的话题,之前我们经常提到大部分容器的生命周期可能不到一周,但是根据我们的调查,很多容器的生命周期更短的说,22%的容器存活时间在10秒或更短,而在一周的时间里,8%的容器会死亡。为什么会这样呢?我们注意到Kubernetes的自动伸缩特性,一旦服务需求减少,Kubernetes会自动减少每个服务的运行实例数,而大多数容器只需要执行一个函数,当函数执行完成后就会停止。虽然第二层看起来很短,但是对于一些进程来说,它可能是整个任务。Sysdig认为未来短生命周期容器的数量会持续增加,特别是在适合运行短生命周期任务的无服务器平台上。容器镜像的生命周期反映了ts代码发布的时间和CI/CD帮助开发团队交付软件更新。根据调查结果,超过半数的容器镜像会在一周甚至更短的时间内被替换。代码部署越频繁,容器镜像的更新速度就越快。对于企业来说,系统7*24小时不间断运行很重要,所以我们也调查了服务的正常运行时间。这里的服务主要是指应用程序的功能组件,比如数据库软件、负载均衡器、自定义代码等等。根据调查结果,超过半数受访者的客服可以连续两周以上保持不间断运营。在幕后,容器可能会暂时停止以支持扩展和其他操作,但应用程序会继续运行。随着代码发布频率的增加,容器及其解决方案仍然可以顺利进行回滚或灰度发布。
