2016美国QCon观察:容器与调度这么热,未来会是怎样的一个趋势?

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 容器(Container)是近些年迅速火热的一门技术和话题,容器技术本身和在容器之上衍生的资源编排和调度技术也在飞速发展和演进之中,容器的代表有Cgroup,Docker,VM等,编排调度的代表有Google开源的Kubernetes以及Apache社区的Mesos,在此之上也衍生出了微服务。

编者按:今年QCon容器/Docker和微服务几乎占据了会场的半壁江山,大家也都趋之若鹜场场爆满,而且作为一名云计算工程师,对容器/Docker也是格外关注,容器/Docker已经不仅仅是个技术,而是作为一个生态在深刻影响着每一个细分行业,对于每个行业既是机会也是挑战,稍有不慎可能就会被时代抛弃。作为与会者现场聆听大家对容器/Docker的思考和应用,并逐步廓清现状和未来,与大家共同学习。

    容器(Container)是近些年迅速火热的一门技术和话题,容器技术本身和在容器之上衍生的资源编排和调度技术也在飞速发展和演进之中,容器的代表有Cgroup,Docker,VM等,编排调度的代表有Google开源的Kubernetes以及Apache社区的Mesos,有了容器这个基础之后微服务(MicroService)也从一个萌芽和概念逐步变成一个现实,并在生产环境中不断得到应用和验证。

    本次2016 San Francisco大会上Container容器、Scheduler调度器、Resources Orchestration资源编排、MicroService微服务等系列技术成为了整个会场最热门的话题,来分享的既有Amazon、Apple等大公司,也有Mesosphere、Netflix和其它一些行业翘楚。

    提到容器就不得不说Docker,Docker目前几乎成为了容器的代名词,有关Docker的文章汗牛充栋,不再赘述。Kubernetes也是Docker生态中的一员,Kubernetes为应用提供资源调度、部署运行、负载均衡、服务发现、弹性扩缩容等功能,Kubernetes是Docker出现之后Google基于Borg的理念开发的产品,可以理解为Kubernetes = Borg + Docker(实际还是有些差别的),当然Borg是无法开源的,Borg如果开源估计半个Google的技术栈都要开源了,后续讲到的Mesos也是与Borg对标的一个技术产品。

    来自Apprenda公司的Mattew Miller分享了利用Kubernetes实现业务微服务化的实践经验,主讲人分享了Kubernetes的架构和目前在开源社区的活跃程度,当然是极火了,Kubernetes中有Controller、Pod、Services几种概念,Pod是一组提供相同服务的容器的统称,Services是以逻辑或者ip地址对外提供服务的内部服务供应者,Controller是Pod的复制抽象,用于Pod的扩缩容,对于搭建平台的用户来说Kubernetes不但提供可靠的cluster&workload管理、还有丰富的经过实战检验的几种pattern抽象,如:

Rolling Deployents:滚动部署新版本并不中断服务,在新版本部署完成后老版本退出

Sidecars:比如收集已有服务的日志

Ambassador:比如提供访问sharding数据的统一入口

Adatapter:比如将服务日志格式转换成日志系统可以识别的格式

Leader Elector:保证提供单例服务访问

Work Queue:将Service从1:1的关系扩展到1:N,为被访问的Service前置一层代理Agent,用来转发请求

AutoScale:根据收集的业务metric来决定是否需要自动扩缩容

    接下来来自Mesosphere(Mesos的发起者)公司的Zhe Yu分享了Mesos的发展历程和最近的一些改进, Mesos提供资源管理和调度框架抽象的功能,第三方应用需要实现Mesos框架提供的API才能接入Mesos所管理的资源,具体的原理和架构可以自己去google。Mesos近些年发展比较稳健,已经在若干大公司的Production环境使用,目前Mesos最大的部署规模是30000个节点超过25W个容器,Apple的Siri就是基于Mesos来实现,Amazon内部据说也用到了Mesos,主讲人也提到了Mesos的一个优势就是提供flexible的可插拔的scheduler,当然Mesos本来就是为此而抽象的,还有flexible的服务发现机制,包括但不限于DNS/ZK/Chubby等,在此还吐槽了一下基于DNS服务发现的机制,虽然没说具体原因,但是应该和DNS的生效时间不可控有关,而且DNS还会受到本地local绑定、JVM虚拟机缓存DNS解析结果等细节问题的干扰,所以不是一个好的选择。由于Docker实在太火,Mesos也加入到了支持Docker的阵营中,从Mesos 028版本开始支持,Mesos支持的Container种类繁多,甚至tar包也可以被当做一种Container,而且也支持Nested Container,还提供了类似于Docker CNM的CNI(Container Network Interface)方案来更清晰剥离Container和网络。

    听完Mesos的分享感觉Mesos还是感受到了来自Kubernetes的压力,也有人现场提问Mesos和Kubernetes的区别,虽然Mesos和Kubernetes根本不属于一个层面的东西,但是Kubernetes更易用更贴近用户业务,Mesos属于我们所谓的一层调度,主要解决资源管理调度问题并提供抽象的框架API,目前熟知的主要应用领域也是Spark,Marathan,Cassandra等大数据相关的应用,每个应用接入时都要完整实现Mesos的API,也就是我们所谓的二层调度,所以还是有不少开发工作在的,门槛较高;Kubernetes主要用来容器调度和服务发现,没有什么额外的开发工作,而且对于一个需要快速Bootstrap的创业公司来讲,明显Kubernetes是一个更接地气的存在。其实Kubernetes和Mesos是可以共存的,Mesos甚至可以作为Kubernetes的资源提供者,两者解决的本来就不是同一层面的问题,应该说Kubernetes解决了Mesos无法解决的问题,而这些问题是更为普适的痛点。稍后来自Apple的人分享了Mesos的最佳实践,尤其是对Stateful和Stateless的服务的区别管理可圈可点。

    Amazon的人也分享了ECS(EC2 Container Service)的一些基本原理和实现机制,能够让用户方便地管理大规模的容器集群,并通过API的方式来自己编程随心所欲管理Docker和其它各种资源如ELB,当然其它云厂商也有对应的服务,如阿里云的容器服务(Container Service),Azure的ACS等。

    今天还听了一些其他场次,会在其它文章中分析汇总,本文主要聚焦容器和调度问题。

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
1月前
|
Kubernetes 网络安全 调度
容器服务ACK常见问题之容器服务ACK的eci调度卡住如何解决
容器服务ACK(阿里云容器服务 Kubernetes 版)是阿里云提供的一种托管式Kubernetes服务,帮助用户轻松使用Kubernetes进行应用部署、管理和扩展。本汇总收集了容器服务ACK使用中的常见问题及答案,包括集群管理、应用部署、服务访问、网络配置、存储使用、安全保障等方面,旨在帮助用户快速解决使用过程中遇到的难题,提升容器管理和运维效率。
|
1月前
|
运维 应用服务中间件 调度
|
4月前
|
Java 调度 Docker
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
Spring Boot 3 整合 xxl-job 实现分布式定时任务调度,结合 Docker 容器化部署(图文指南)
|
9月前
|
Kubernetes 负载均衡 网络协议
如何在生产环境中使用 Docker Swarm 调度容器?
随着我们的业务规模越来越大,我们的容器规模也逐渐增大时,数量庞大的容器管理将给我们带来许多挑战。Docker 官方为了解决多容器管理的问题推出了 Docker Swarm ,我们可以用它来管理规模更大的容器集群。
171 0
|
9月前
|
存储 负载均衡 应用服务中间件
Docker之Docker Swarm调度容器
Docker之Docker Swarm调度容器
167 0
|
11月前
|
Kubernetes Cloud Native 调度
带你读《企业级云原生白皮书项目实战》——3.2.8 Scheduler 调度
带你读《企业级云原生白皮书项目实战》——3.2.8 Scheduler 调度
|
11月前
|
Prometheus 运维 监控
带你读《企业级云原生白皮书项目实战》——3.2.9 nginx controller 最佳调度部署实践
带你读《企业级云原生白皮书项目实战》——3.2.9 nginx controller 最佳调度部署实践
160 0
|
资源调度 负载均衡 Kubernetes
Koordinator 助力 ACK 容器调度升级,提升应用性能,节约资源成本
Koordinator 助力 ACK 容器调度升级,提升应用性能,节约资源成本
Koordinator 助力 ACK 容器调度升级,提升应用性能,节约资源成本
|
弹性计算 Kubernetes 监控
阿里云容器服务共享GPU调度支持算力分配
ACK Pro集群支持为应用申请GPU显存和算力,能够帮助您更精细化的使用GPU的显存和算力资源。本文介绍如何使用算力分配功能。前提条件已创建ACK Pro版集群,且集群版本为1.20.11。关于Kubernetes的升级操作,请参见升级ACK集群K8s版本。已安装共享GPU组件,且Chart版本>1.2.0。关于安装共享GPU组件的具体操作,请参见安装并使用共享GPU组件和资源工具。cGP
1216 0
阿里云容器服务共享GPU调度支持算力分配
|
Kubernetes Cloud Native 安全
Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架
经过社区多位成员的贡献,Koordinator 0.6 版本正式发布。相较于上一个版本 0.5,新版本进一步完善了 CPU 精细化编排能力,更好的兼容原生用法;支持了资源预留的能力(Reservation),补齐了调度原子语意缺失;发布了全新的重调度框架,支持用户灵活的扩展自定义插件。这些特性源自于阿里巴巴内部的生产实践,并结合上游社区规划思考,为用户带来标准、强大、灵活的调度解决方案。
946 0
Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架