PaaS是什么

PaaS之前,IaaS,主流普遍的用法就是租一批虚拟机,用脚本部署应用。
但难以绕过的问题就是,云端虚拟机和本地环境不一致

PaaS应用托管的能力可以很好解决这个问题

PaaS最核心的能力:应用打包、分发机制、应用隔离
打包:将可执行文件和启动脚本打进一个压缩包
分发:通过调度器选择运行该应用的虚拟机
隔离:调用系统CGroupsNamespace,为应用创建运行的隔离环境(沙盒)

容器是什么

就是沙盒。依赖操作系统内核支持。

  • CGroups
  • Namespace

Docker为何能迅速崛起

早期PaaS项目代表(Cloud Foundry),用户必须为每种语言、每种框架、甚至每个版本的应用维护一个打好的包。费尽心机。

Docker如何解决打包问题:镜像

镜像也是一个压缩包,大多数Docker镜像除了应用可执行文件和启停脚本外,还包含一个完整操作系统的所有文件和目录(不包括内核),赋予本地环境和云端环境高度一致的能力。

  • 完整操作系统的所有文件、目录

    • 在Dockerfile中对应FROM参数,指定引用的基础镜像
  • 应用可执行文件、启停脚本

    • 在Dockerfile中对应其他参数
# 构建镜像
docker build -t NAME .
# 解压镜像,创建沙盒运行应用
docker run NAME

因为镜像的便利,Docker Swarm,推了一波CaaS(Container as a Service)

编排

通过某些具体或者配置完成一组虚拟机以及关联资源的定义、配置、创建、删除等工作,然后由云计算平台按照这些指定的逻辑来完成的过程。

  • Docker Compose
  • Docker Swarm
  • Mesos Marathon
  • Kubernetes

Docker Compose

fig项目,通过配置文件定义容器间的关联。仅支持单机。

# 启动
docker-compose up

Docker Swarm

用户创建容器的请求会被Swarm拦截,通过具体调度算法找到合适的Daemon运行。Compose集群版。

# Docker由单机到多机部署
docker run -H "Swarm API" NAME

Mesos Marathon

有超大规模集群的管理经验。

Kubernetes

简称K8s。从API到容器运行时的每一层,K8s项目都为开发者暴露出了可以扩展的插件机制,鼓励用户通过代码的方式介入到K8s项目的每一个阶段。

催生出很多优秀的项目

  • Istio,微服务治理
  • Operator,有状态应用部署框架
  • Rook,把重量级Ceph封装成简单易用的容器存储插件

PaaS 什么有价值

容器本身没有价值,有价值的是容器编排。

标签: none

添加新评论