云计算 频道

亚马逊ECS和Kubernetes管理百万容器8个洞察

  【IT168 调查报告】近期,最新一份全球Docker生产数据报告中,根据全球Docker使用情况的最新调查显示,容器已不再是一项利基技术。

  随着容器化变得越来越主流,我们决定研究编排容器工作负载的技术生态系统。 Kubernetes,Mesos,Amazon弹性容器服务(ECS),Azure容器服务和Google Kubernetes引擎等平台提供了一个抽象层和自动化来帮助管理大量的临时容器。 以下的调查探讨了Datadog的客户在任意一天中如何使用编排工具(尤其是ECS和Kubernetes)管理数百万个容器。

  1. ECS在AWS中盛行 但Kubernetes在其他领域领先

  容器运行的环境似乎强烈地影响了编排工具的选择。 我们在AWS中运行容器编排器的大多数客户选择ECS,但我们也看到在AWS环境中大量使用Kubernetes。 在Google云平台,Azure,本地数据中心和其他环境中,绝大多数公司选择Kubernetes进行编排。

  值得注意的是,亚马逊在2017年12月推出了两项服务,可能会重塑AWS环境中的编排环境。 Amazon为Kubernetes(EKS)提供的新弹性容器服务将托管的Kubernetes群集引入AWS云,而AWS Fargate是一种新的服务,用于部署容器而不用管理底层基础架构。 我们将跟踪这些服务在未来几个月中将如何影响业务流程的使用。

  2. Kubernetes的Docker环境份额 9个月内增长了11%

  随着越来越多的公司采用Docker,我们也看到了更多容器编排器的使用——特别是Kubernetes。 (在本报告中,Kubernetes数据包括运行自我管理群集的公司,以及Google Kubernetes Engine,Azure Container Service和其他托管Kubernetes服务的用户。)

  截至2017年10月,Kubernetes占有Docker环境的41%份额,而今年年初只有30%。 考虑到Docker的快速增长,所有运行Kubernetes的Datadog客户的份额增加了约50%。

  3. ECS在AWS Docker环境中的份额 9个月内增长7%

  随着编排越来越流行,AWS公司越来越多地采用Amazon ECS来管理其容器船队。 截至2017年10月,ECS在AWS中拥有34%的Docker环境份额,高于1月份的27%。 由于AWS上的Docker使用情况正在不断增加,这相当于运行ECS的所有Datadog客户的份额增加了大约40%。

  4. 编排缩短了40%的Docker主机寿命

  编排的范围超出了容器船队,也影响了底层基础设施。 在由ECS或Kubernetes编排的集群中,主机的平均使用寿命约为10天,而没有编排的Docker主机则有17天。 作为比较,非Docker主机平均生活23天。 我们得出结论:编排使组织能够专注于服务和工作负载,将主机视为一次性基础设施单元,可根据需求自动配置或销毁。

  5. Kubernetes容器流失比ECS容器快8倍

  尽管编排工具的选择在很大程度上取决于基础设施环境,但ECS和Kubernetes一旦部署,往往会出现重大的运营差异。 尤其是,Kubernetes的工作量非常快地通过容器来搅动:在Kubernetes环境中,容器的平均寿命仅为1.5天,而ECS管理的容器的平均寿命为12天。 这种差异可能部分归因于Kubernetes对象的可用性,例如作业,一旦完成就自动终止容器。

  6. ECS运行较少的现成镜像

  在Kubernetes集群中,我们看到像NGINX,Elasticsearch和Postgres这样的通用基础设施技术的容器镜像的广泛部署。 这些相同的图像往往出现在未经调整的Docker环境中,尽管数量较少。 但是在ECS集群中,我们的调查显示很少采用通用的,公开的容器镜像:只有NGINX出现在超过10%的ECS环境中。 我们得出结论:许多ECS用户可能采用托管的AWS服务,例如Amazon Relational Database Service(RDS),Amazon Elasticsearch Service和Amazon Simple Queue Service(SQS),而不是为这些基础架构组件运行容器化服务。

  7. Kubernetes的容器密度是ECS的3倍

  在Kubernetes组织的中位数上,每个主机在五分钟的抽样窗口内运行大约九个容器,而在ECS组织中只有三个容器。 结合事实5中发现的容器的巨大差异,看起来Kubernetes用户倾向于运行大量短期的轻量级容器,而ECS则是更接近独立应用程序的运行时间更长的容器。

  8. 大多数组织都采用“最新”容器与特定版本结合

  从Docker Hub或其他容器注册表中提取容器镜像时,用户可以通过提供标签来检索镜像的特定版本。 大约16%的组织单独使用:最新的标签,这可能是一个明确或隐含的选择:如果没有提供标签,则最新的是docker pull命令的默认值。 另一方面,大约10%的组织总是在提取容器镜像时提供特定的版本标签。 其余的74%使用混合的标签——在某些情况下拉取:最新的镜像,并在其他情况下指定特定的版本。

0
相关文章