本文个人博客地址为:
基于Docker及Kubernetes技术构建容器云(PaaS)平台 - 胡伟煌 | Blog
【编者的话】
目前很多的容器云平台通过Docker及Kubernetes等技术提供应用运行平台,从而实现运维自动化,快速部署应用、弹性伸缩和动态调整应用环境资源,提高研发运营效率。
从宏观到微观(从抽象到具体)的思路来理解:云计算→PaaS→ App Engine→XAE[XXX App Engine] (XAE泛指一类应用运行平台,例如GAE、SAE、BAE等)。
本文简要介绍了与容器云相关的几个重要概念:PaaS、App Engine、Docker、Kubernetes。
1. PaaS概述
1.1. PaaS概念
- PaaS(Platform as a service),平台即服务,指将软件研发的平台(或业务基础平台)作为一种服务,以SaaS的模式提交给用户。
- PaaS是云计算服务的其中一种模式,云计算是一种按使用量付费的模式的服务,类似一种租赁服务,服务可以是基础设施计算资源(IaaS),平台(PaaS),软件(SaaS)。租用IT资源的方式来实现业务需要,如同水力、电力资源一样,计算、存储、网络将成为企业IT运行的一种被使用的资源,无需自己建设,可按需获得。
- PaaS的实质是将互联网的资源服务化为可编程接口,为第三方开发者提供有商业价值的资源和服务平台。简而言之,IaaS就是卖硬件及计算资源,PaaS就是卖开发、运行环境,SaaS就是卖软件。
1.2. IaaS/PaaS/SaaS说明
|
类型
|
说明
|
比喻
|
例子
|
| — | — | — | — |
| IaaS:Infrastructure-as-a-Service(基础设施即服务) | 提供的服务是计算基础设施 | 地皮,需要自己盖房子 | Amazon EC2(亚马逊弹性云计算) |
| PaaS: Platform-as-a-Service(平台即服务) | 提供的服务是软件研发的平台或业务基础平台 | 商品房,需要自己装修 | GAE(谷歌开发者平台) |
| SaaS: Software-as-a-Service(软件即服务) | 提供的服务是运行在云计算基础设施上的应用程序 | 酒店套房,可以直接入住 | 谷歌的Gmail邮箱 |
1.3. PaaS的特点(三种层次)
|
特点
|
说明
|
| — | — |
| 平台即服务 | PaaS提供的服务就是个基础平台,一个环境,而不是具体的应用 |
| 平台及服务 | 不仅提供平台,还提供对该平台的技术支持、优化等服务 |
| 平台级服务 | “平台级服务”即强大稳定的平台和专业的技术支持团队,保障应用的稳定使用 |
2. App Engine概述
2.1. App Engine概念
App Engine是PaaS模式的一种实现方式,App Engine将应用运行所需的 IT 资源和基础设施以服务的方式提供给用户,包括了中间件服务、资源管理服务、弹性调度服务、消息服务等多种服务形式。App Engine的目标是对应用提供完整生命周期(包括设计、开发、测试和部署等阶段)的支持,从而减少了用户在购置和管理应用生命周期内所必须的软硬件以及部署应用和IT 基础设施的成本,同时简化了以上工作的复杂度。常见的App Engine有:GAE(Google App Engine),SAE(Sina App Engine),BAE(Baidu App Engine)。
App Engine利用虚拟化与自动化技术实现快速搭建部署应用运行环境和动态调整应用运行时环境资源这两个目标。一方面实现即时部署以及快速回收,降低了环境搭建时间,避免了手工配置错误,快速重复搭建环境,及时回收资源, 减少了低利用率硬件资源的空置。另一方面,根据应用运行时的需求对应用环境进行动态调整,实现了应用平台的弹性扩展和自优化,减少了非高峰时硬件资源的空置。
简而言之,App Engine主要目标是:Easy to maintain(维护), Easy to scale(扩容), Easy to build(构建)。
2.2. 架构设计
2.3. 组成模块说明
|
组成模块
|
模块说明
|
| — | — |
| App Router[流量接入层] | 接收用户请求,并转发到不同的App Runtime。 |
| App Runtime[应用运行层] | 应用运行环境,为各个应用提供基本的运行引擎,从而让app能够运行起来。 |
| Services[基础服务层] | 各个通用基础服务,主要是对主流的服务提供通用的接入,例如数据库等。 |
| Platform Control[平台控制层] | 整个平台的控制中心,实现业务调度,弹性扩容、资源审计、集群管理等相关工作。 |
| Manage System[管理界面层] | 提供友好可用的管理操作界面方便平台管理员来控制管理整个平台。 |
| Platform Support[平台支持层] | 为应用提供相关的支持,比如应用监控、问题定位、分布式日志重建、统计分析等。 |
| Log Center[日志中心] | 实时收集相关应用及系统的日志(日志收集),提供实时计算和分析平台(日志处理)。 |
| Code Center[代码中心] | 完成代码存储、部署上线相关的工作。 |
3. 容器云平台技术栈
|
功能组成部分
|
使用工具
|
| — | — |
| 应用载体 | Docker |
| 编排工具 | Kubernetes |
| 配置管理 | Etcd |
| 网络管理 | Flannel |
| 存储管理 | Ceph |
| 底层实现 | Linux内核的Namespace[资源隔离]和CGroups[资源控制] |
- Namespace[资源隔离]
Namespaces机制提供一种资源隔离方案。PID,IPC,Network等系统资源不再是全局性的,而是属于某个特定的Namespace。每个namespace下的资源对于其他namespace下的资源都是透明,不可见的。 - CGroups[资源控制]
CGroup(control group)是将任意进程进行分组化管理的Linux内核功能。CGroup本身是提供将进程进行分组化管理的功能和接口的基础结构,I/O或内存的分配控制等具体的资源管理功能是通过这个功能来实现的。CGroups可以限制、记录、隔离进程组所使用的物理资源(包括:CPU、memory、IO等),为容器实现虚拟化提供了基本保证。CGroups本质是内核附加在程序上的一系列钩子(hooks),通过程序运行时对资源的调度触发相应的钩子以达到资源追踪和限制的目的。
4. Docker概述
更多详情请参考:Docker整体架构图
4.1. Docker介绍
- Docker - Build, Ship, and Run Any App, Anywhere
- Docker是一种Linux容器工具集,它是为“构建(Build)、交付(Ship)和运行(Run)”分布式应用而设计的。
最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!