作者:精灵云


前言
早在十多年前国内外的一些大厂就开始投入研发和使用容器技术,比如Google,对他们来说,使用容器能够充分利用计算资源节省硬件成本。而这几年——众所周知——真正把容器技术发扬光大的是Docker。Docker的slogan“Build,Ship & Run anywhere”定位非常清晰,Docker的出现打破了传统运维模式里从打包到部署的过程中环境、语言、平台不一致的乱象,将这一整套开发运维模式标准化了,从而真正帮助企业实践了DevOps和微服务化。
但是,国内的大型企业面临技术转型的的时候,历史包袱太沉重,对Docker的接受和部署非常缓慢。同样地,多数的中小型企业也并未把Docker作为生产环境上部署和管理服务的标配,而选择继续使用传统的运维方案。造成这种现象的原因是什么呢?可能原因之一是企业从业人员对Docker的学习认知并不够。之二是目前市面上Docker的容器编排系统很多,常见的就有K8s,Mesos,Swarm,Rancher,Newben,编排系统的学习和认知成本也进一步提升了企业应用Docker的难度。

企业为什么要使用Docker
这个问题的本质是企业用Docker究竟能做什么,要回答这个问题,需要我们回归到Docker本身来分析。Docker本身只是提供了一个运行环境,除了把服务跑起来之外,要让多个服务容器协同起来工作,实际还需要一个容器编排系统。一般来说企业期望编排系统能帮助实现如下几个目的:
 定义服务栈
提供一种机制,可以用配置文件来定义服务的网络端口,镜像及版本,在需要的时候通过配置可再现的创建出一整套服务。
 服务发现、注册和注销
需要在创建服务后自动创建DNS记录用于访问相关容器,容器状态健康后注册SRV信息。
 健康检查
可以精细化控制服务注册时机,以支持容器正常启动后的初始化完成后再注册服务,以对外提供稳定可用的服务。
 自动扩容和缩容
实时监测容器CPU和内存使用情况,当容器平均性能指标超过阈值一段时间后启动自动扩容,创建更多容器以达到阈值要求,当没有主机资源运行新容器时,自动申请新主机。当一段时间负载持续低于阈值启动缩容优先删除新创建容器和主机,以释放资源和降低运营成本。
 合理的调度
要求最大限度的榨取主机资源避免浪费,并可实现快速的创建容器,减少镜像拉取时间和磁盘空间浪费。
 负载均衡和高可用

使用Docker的三个阶段
根据我们的观察,根据企业规模和阶段性需求的不同,在使用Docker技术的时候分了三个阶段来进行。

 阶段一:利用开源工具实现一定功能
由于一个Docker容器只是一个(或一组)进程的封装,一个容器需要绑定宿主机的端口来向宿主机之外的网络提供服务,为了避免端口冲突,对于需要暴露端口的容器,Docker会随机绑定一个宿主机端口,这个时候就需要服务发现来帮助不同机器上的服务来进行通信了。举例一个简单的方案:Docker-discover和Docker-register。
这个方案提供了一套系统的几个基本功能:应用发布,服务发现,负载均衡和进程守护。除了提供一致的运行环境使服务的发布和回滚比较可控,这套简单的系统在发布流程上还是像传统运维一样需要远程执行脚本,功能比较简单,适用于小企业,随着后端系统成长起来,很快就不够用了。
 阶段二:开源容器编排工具
第二个阶段是选择开源容器编排框架来管理,常见的开源容器编排工具有Kubernetes,Swarm和Mesos 。市面上也有同时支持这三种开源容器编排引擎的容器管理打包方案,通常作为入门级容器管理平台使用。这种入门级的方案虽然是开源的,但技术上的文档明显欠缺,社区中的使用难题也很少有公司之外的contributor,当暴露一些难题的时候就很难解决,这点和Kubernetes有很大不同。

Kubernetes提供的是一个框架,要求使用者对他的组件有一定程度了解,使用之前需要不少配置工作,对Docker入门者来说,学习能力要求很高,不过好在社区有各种contributor,提供了很多帮助部署的installer。除了对学习能力有要求以外,对中小企业来说,对基础设施的投入肯定不如大企业,一般没有专人去熟悉Kubernetes这种大型开源项目。
当然,像Kubernetes这样的容器编排系统本身很复杂,体量很大,很多企业也出现过当丢包严重的时候问题排查起来很困难的局面,毕竟要深入到庞大的代码中定位问题本身就是件很不容易的事情。
虽然现在Kubernetes是容器调度主力军,但我们认为调度引擎是容器最核心的模块,在PaaS这个关键的云计算领域不应该由国外来主导,特别是在军工、政务、金融等领域,我们需要自主研发的调度引擎,只有这样我们才能掌握云计算基础架构的核心技术。于是就有了第三个阶段的使用建议:高定制化的容器云平台。
基于Docker的PaaS/CaaS平台
为了适应国内的企业需求,出现了很多运用Docker开源调度框架的容器云平台,这些平台大都有一个特点:“服务本地化,核心开源化”。我们认为这并不是真正的本地化,真正的本地化应该是在满足不同领域不同企业的上云和转型需求的同时能随时响应定制化需求。基于这样的思想,被称为“中国的K8s”的容器调度引擎Newben应运而生。
Newben是精灵云全自主研发的容器调度引擎,也是目前国内唯一自研引擎,具备多项技术专利和著作专利,定制能力强、支撑功能丰富,能为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能。如下图所示,将Newben、K8s、Mesos和Swarm进行详细对比,会发现Newben事实上吸取了各开源调度引擎的长处,在网络、服务发现、负载均衡、弹性伸缩、高可用、CI/CD集成、镜像集成、日志监控等方面都有着非常大的优势。

(Newben和开源容器调度框架的对比)
Ghostcloud EcOS平台是精灵云旗下的企业级容器云平台,内置自研容器调度引擎Newben,同时适配多种开源框架,如K8s、Swarm等。由Ghostcloud精灵云全自主研发的EcOS平台基于精灵云PaaS/CaaS云核心功能模块,能支持私有云和混合云部署,满足企业的容器云部署需求,为企业研发、运维及新业务上线部署提供了一整套解决方案和管理平台。不仅帮助企业大幅削减成本和提升效率,帮助传统企业加速所需业务互联网化进程,更能帮助互联网企业加快产品迭代,提高产品市场占有率。

(EcOS的平台架构)
Ghostcloud EcOS的应用场景
Ghostcloud EcOS平台作为统一的平台, 可服务于多个解决方案,应用到政务、教育、金融、互联网、医疗等多个行业和领域。接下来我们以金融行业为例来说明。

(EcOS应用场景)
传统的金融行业受迫于银监会的要求(容器作为两项最核心技术之一被写入十三五规划)需要在企业内部推行云计算技术,同时互联网金融的爆发式增长,传统金融公司在技术上无法应对自如。蚂蚁金服和万达金融等大型互联网金融公司都在使用容器作为后台支撑平台,传统金融企业也需要类似的PaaS/CaaS平台,但是本身没有搭建和维护能力。

面对这些需求,需要从几个方面解决:
• 整合系统内部资源,推行基于容器的开发、测试、生产和运维一体的PaaS平台;
• 推行DevOps,开发运维一体化,降低运维成本;
• 推行敏捷和CI/CD,加快系统交付和部署;
• 使用基于容器的弹性负载均衡系统,适配突发流量;
• 加固开源容器系统,对镜像及镜像仓库进行私有化定制。
在具体的实施中,使用EcOS容器云平台,对仓库和镜像进行加固,在内网和公网环境混合管理做安全隔离,借助平台自带的CI/CD流程,标准化研发流程;借助EcOS的资源调度框架,动态资源调配。通过容器只暴露特定端口,提升了整个系统的安全性,系统开发速度和上线速度大幅度提升,团队整体响应速度也大幅度提升。通过商用Docker云平台,提升了IT部门的技术能力,更好的适应了未来业务发展需求,物理资源利用率提升,能够很好的应对突发的流量暴增,在有限资源下提升了系统并发量。

结语
国内的企业需要在使用Docker进程中选择更本土化的容器编排系统,只有拥有核心可控的技术才能真正开展云计算基础设施建设。推荐选择能针对个性化需求做定制化解决方案的PaaS/CaaS容器云平台——Ghostcloud EcOS。

企业为什么要使用基于Docker的PaaS/CaaS平台相关推荐

  1. 基于微服务和Docker的PaaS云平台架构设计

    基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件.数据服务.云服务器等资源,开发人员 ...

  2. 基于Docker的开源端到端开发者平台

    今天和大家一起分享的是一个基于Docker的适用于多平台的端到端开发者平台,Appwrite Appwrite,可以适用如Flutter.Vue.Angular.React.iOS.Android等众 ...

  3. re.containerbase.startinternal 子容器启动失败_微服务架构:基于微服务和Docker容器技术的PaaS云平台架构设计(微服务架构实施原理)...

    走过路过不要错过 点击蓝字关注我们 基于微服务架构和Docker容器技术的PaaS云平台建设目标是给我们的开发人员提供一套服务快速开发.部署.运维管理.持续开发持续集成的流程.平台提供基础设施.中间件 ...

  4. 基于微服务和Docker容器技术的PaaS云平台架构设计

    本文讲的是基于微服务和Docker容器技术的PaaS云平台架构设计[编者的话]在系统架构上,PaaS云平台主要分为微服务架构.Docker容器技术.DveOps三部分,这篇文章重点介绍微服务架构的实施 ...

  5. 基于Docker的新型PaaS平台(一)

    PaaS模式 PaaS作为云计算重要的一类服务,为用户提供完整的应用生命周期管理和相关资源服务. 用户可以通过PaaS平台完成应用的构建.部署.运维管理,无需自行搭建计算执行环境, 如安装服务器,操作 ...

  6. master节点重置后添加node报错_企业实战(23)基于Docker平台的Jenkins添加node节点与报错详解(2)...

    相关文章  企业实战(23)基于Docker平台部署Jenkins中国定制版(1) 添加node节点前配置 在这里插入图片描述 在这里插入图片描述 开始添加node节点 在这里插入图片描述 在这里插入 ...

  7. 基于 Docker 的微服务架构实践

    http://dockone.io/article/4887 前言 基于 Docker 的容器技术是在2015年的时候开始接触的,两年多的时间,作为一名 Docker 的 DevOps,也见证了 Do ...

  8. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  9. 视频私有云实战:基于Docker构建点播私有云平台

    私有云是为一个客户单独使用而构建的,因而提供对数据.安全性和服务质量的最有效控制.前置条件是客户拥有基础设施,并可以使用基础设施在其上部署应用程序.其核心属性是专有的资源.本篇文章将会结合网易云信的实 ...

最新文章

  1. 帝国Cms7.5开发的博客资讯新闻类微信小程序
  2. Jmeter之HTTP Request Defaults
  3. 云计算开发教程:Python自动化运维开发实战流程控制
  4. 披荆斩棘:论百万级服务器反入侵场景的混沌工程实践
  5. Chrome 开发者工具 performance 标签页的用法
  6. GraphQL:简单开开始一个查询
  7. destroy 方法_线程方法destroy()和stop(Throwable)在JDK 11中删除
  8. postgresql 高可用 etcd + patroni 之六 callback bind vip
  9. 超详细讲解,带你零基础入门 kafka!
  10. MySQL Identifiers(标识符)
  11. 2011 端午后,杭州支付宝
  12. 1. OpenMAX系列 —— ACodec和OMX的联系
  13. 正版卡巴斯基安全部队2011激活码1年
  14. 聊聊docker的使用心得
  15. Linux安装WIFI无线网卡驱动
  16. Alcor(安国)AU6983量产工具(100421)量产成功教程
  17. 数学建模层次分析法例题及答案_【数模】层次分析法 - 全国大学生数学建模竞赛(CUMCM) - 数学建模社区-数学中国...
  18. crmeb 一号通使用方法
  19. 【故障分析】基于主成分分析实现三容水箱故障诊断附matlab代码
  20. 数字信号处理公式变程序(四)——巴特沃斯滤波器(下)

热门文章

  1. C#简介- 类和对象
  2. 自定义GridView分页模板
  3. 用Response.Write和Page.RegisterStartupScript显示的提示框有什么区别
  4. 使用VS自带的混淆器防止你的程序被反编译
  5. 如何检查当TextBox设置为多行时是不是超长了?
  6. 使用APIHOOK实现进程隐藏
  7. LIVE555简介及在Windows上通过VS2013编译操作步骤
  8. Windows7/10上配置OpenCV3.3.0-Python3.6.2操作步骤
  9. 【linux】用户和组的管理:添加、修改、删除(useradd usermod userdel groupadd groupdel)
  10. 【转载】linux静态链接库与动态链接库的区别及动态库的创建