容器和容器云
云计算定义:云计算是一种资源服务模式,该模式可以随时随地,便捷按需地从可配置计算资源共享池中获取所需的资源,资源能够快速供应并释放,大大减少了资源管理工作开销。
经典云计算架构包括三层服务模型,分别是 IaaS(Infrastructure as a Service,基础设施即服务),PaaS(Plarform as a Service,平台即服务) 和 SaaS(Software as a Service,软件即服务)。其架构示意图如下所示:
值得注意的是,随着 Docker 容器技术的发展,云计算的“三层架构”将趋于融合或者扁平化,这不意味着 IaaS,PaaS 等技术不再需要了,也不意味着经典的 IaaS,PaaS 曾经试图解决的问题不存在了(比如资源切分,资源调度,分布式存储,应用发布,弹性伸缩等)。而是,开发者将关注的主体转变为应用本身,换句话说模糊了开发和运维的边界。
云平台依据其试图解决的问题已经很难被清晰地划分到 IaaS 或者 PaaS 层次上。以容器云为例,当容器云专注于资源共享和隔离,容器编排与部署时,它更接近传统的 IaaS。当容器云渗透到应用支撑与运行时环境时,它更接近于传统的 PaaS。
那么什么是容器云呢?
容器云以容器为资源分割和调度的基本单位,封装整个软件运行时环境,为开发者和系统管理员提供用于构建,发布和运行分布式应用的平台。
如果说云平台依据其试图解决的问题已经很难被清晰地划分到 IaaS 或者 PaaS 层次上,那么还有什么更好的划分标准吗?
换个维度从自由度和自动化程度思考会如何?
如纯 IaaS 云平台 OpenStack,它为应用开发者提供了如同物理机的部署环境,开发者的自由度非常高,不过相应的开发者需要实现应用上传,应用监控,管理等操作,自动化程度低。再看 kubernetes 提供了完整的应用容器集群,对应用本身的限制很少,不过应用打包,上传,发布等运维工作需要开发者完成,自动化程度也不高。
云平台存在的目的是为了给用户带来“云”的便利,那么与其思考云平台属于哪一层,思考它在自动化和自由度方面的优缺点会不会更好呢?
补充: 参看 这里 了解什么是云原生