# 云计算
“云计算”这个概念也是由 Google 提出的,可见这家公司对计算机技术发展的贡献有多大。自云计算 2006 年被提出后,已经逐渐成为信息技术产业发展的战略重点,你可能也会切身感受到变化。我们平时在讨论技术的时候,经常会被问到诸如“你们公司的业务是否要考虑上云”的问题,而国内相关的云计算大会近几年也如雨后春笋般地召开,可见其有多么火热
云计算架构分为三大服务层
- IaaS(Infrastructure as a Service,基础设施即服务)
IaaS 层通过虚拟化技术提供计算、存储、网络等基础资源,可以在上面部署各种 OS 以及应用程序。开发者可以通过云厂商提供的 API 控制整个基础架构,无须对其进行物理上的维护和管理。
- PaaS(Platform as a Service,平台即服务)
PaaS 层提供软件部署平台(runtime),抽象掉了硬件和操作系统,可以无缝地扩展(scaling)。开发者只需要关注自己的业务逻辑,不需要关注底层。
- SaaS(Software as a Service,软件即服务)
层直接为开发者提供软件服务,将软件的开发、管理、部署等全部都交给第三方,用户不需要再关心技术问题,可以拿来即用
# Docker
- 容器管理工具
属于linux 容器的一种封装,提供简单易用的容器使用接口
Docker 这个新的容器管理引擎大大降低了使用容器技术的门槛,轻量、可移植、跨平台、镜像一致性保障等优异的特性,一下子解放了生产力。开发者可以根据自己的喜好选择合适的编程语言和框架,然后通过微服务的方式组合起来。交付同学可以利用容器保证交付版本和交付环境的一致性,也便于各个模块的单独升级。测试人员也可以只针对单个功能模块进行测试,加快测试验证的速度。
在某一段时期内,大家一提到 Docker,就和容器等价起来,认为 Docker 就是容器,容器就是Docker。其实容器是一个相当古老的概念,并不是 Docker发明的,但 Docker 却为其注入了新的灵魂——Docker 镜像
# image(镜像)
# 容器
# Dockerfile
# Kubernetes(K8s)
- 容器调度平台
有了容器,开发人员就只需要考虑如何恰当地扩展、部署,以及管理他们新开发的应用程序。但如果我们大规模地使用容器,就不得不考虑容器调度、部署、跨多节点访问、自动伸缩等问题
- Swarm
Swarm是 Docker 公司自己的产品,会直接调度 Docker 容器,并且使用标准的 Docker API 语义,为用户提供无缝衔接的使用体验。 Swarm 更多的是面向于开发者,而且对容错性支持不够好。
- Mesos
Mesos是一个分布式资源管理平台,提供了 Framework 注册机制。接入的框架必须有一个Framework Scheduler 模块负责框架内部的任务调度,还有一个 Framework Executor 负责启动运行框架内的任务。Mesos 采用了双层调度架构,首先 Mesos 将资源分配给框架,然后每个框架使用自己的调度器将资源分配给内部的各个任务使用,比如 Marathon 就是这样的一个框架,主要负责为容器工作负载提供扩展、自我修复等功能。
- Kubernetes
Kubernetes的目标就是消除编排物理或者虚拟计算、网络和存储等基础设施负担,让应用运营商和开发工作者可以专注在以容器为核心的应用上面,同时可以优化集群的资源利用率。Kubernetes 采用了 Pod 和 Label 这样的概念,把容器组合成一个个相互依赖的逻辑单元,相关容器被组合成 Pod 后被共同部署和调度,就形成了服务,这也是 Kuberentes 和其他两个调度管理系统最大的区别。
- 概念
Kubernetes 看作是用来部署镜像的平台
可以用来操作多台机器调度部署镜像
在Kubernetes 中,可以使用集群来组织服务器,集群会存在一个master节点,该节点是 Kubernetes集群的控制节点,负责调度集群中其他服务器的资源,其他节点被称为Node