大庆| 大方| 察隅| 巴楚| 宜君| 清苑| 盐亭| 岱山| 赤城| 滦县| 泗水| 任丘| 辽源| 古交| 茶陵| 沙洋| 华蓥| 昭通| 邵东| 甘棠镇| 博鳌| 浦东新区| 峨山| 连南| 新疆| 景谷| 南木林| 石林| 平和| 临川| 富源| 珠穆朗玛峰| 穆棱| 长汀| 娄烦| 永胜| 临清| 喀什| 谢家集| 乐至| 湄潭| 临沧| 宁阳| 南京| 马尾| 吉隆| 桂林| 兴山| 江城| 无棣| 衡水| 普宁| 水城| 旺苍| 云林| 昂仁| 北仑| 巴马| 澄城| 承德市| 房县| 门源| 东西湖| 巴里坤| 长寿| 绥滨| 青川| 北仑| 台中县| 拉萨| 壶关| 江山| 平罗| 弥渡| 莘县| 商水| 景县| 昭通| 睢宁| 靖远| 博罗| 泗县| 丹凤| 泰安| 高雄县| 盐池| 定结| 济源| 襄樊| 砚山| 阿拉尔| 津市| 察布查尔| 贵池| 常州| 伊川| 农安| 富裕| 图们| 宁陵| 彝良| 介休| 万年| 阿拉尔| 九龙坡| 孝昌| 营口| 白云| 资兴| 陆丰| 建昌| 安徽| 邵阳市| 南涧| 永清| 大竹| 六枝| 石泉| 仙桃| 鼎湖| 蓟县| 莱芜| 金湾| 金门| 开封县| 旅顺口| 宜城| 嘉义县| 龙岗| 徽州| 柘荣| 绛县| 阳西| 康保| 通海| 大荔| 嘉禾| 东至| 丹凤| 大厂| 宜兰| 青县| 本溪市| 阿拉尔| 香港| 蓬溪| 高港| 九江县| 八一镇| 临海| 文水| 华亭| 怀化| 科尔沁左翼中旗| 长治市| 湖州| 革吉| 富平| 沂源| 吴中| 林芝镇| 江华| 永仁| 屏东| 镇坪| 根河| 李沧| 南陵| 五峰| 阿坝| 德格| 监利| 刚察| 阜新蒙古族自治县| 阳朔| 涉县| 库伦旗| 金湖| 白山| 且末| 五峰| 建宁| 南海| 双辽| 永春| 古县| 奉新| 揭阳| 泉港| 唐海| 曲水| 栾川| 独山| 永定| 西充| 庆云| 晋江| 通海| 渠县| 巴楚| 壶关| 宁县| 苏尼特右旗| 富阳| 定远| 德化| 康保| 阜城| 新安| 平江| 大悟| 盐田| 曲阜| 白朗| 临洮| 乡城| 达尔罕茂明安联合旗| 华县| 科尔沁右翼前旗| 福清| 龙山| 兴海| 叙永| 蒙阴| 乐都| 郏县| 昌平| 塔河| 垦利| 交城| 西峡| 马关| 茶陵| 宿松| 昭觉| 关岭| 珲春| 碌曲| 禄劝| 凌海| 瑞安| 江源| 诸城| 郯城| 高密| 中阳| 寿阳| 大理| 崂山| 普兰| 雅江| 黄岩| 洛川| 绥化| 莘县| 南康| 鹿泉| 隆化| 合山| 布拖| 曲周| 洋山港| 克拉玛依| 达坂城| 新濠天地线上游戏
|
|
51CTO旗下网站
|
|
移动端

两种不同的管理容器的方式对比

在本文中,我们先简要谈论下容器化概念,后面我将使用两种不同的编排方法来部署一个AI-API架构,一个包含简单API的AI聊天机器人。一种是使用Kubernetes,另外一种是只使用基于容器的手动控制管理平面。

作者:fengxsong翻译来源:dockone.io|2019-01-17 13:57

容器化近年来备受关注,围绕着容器技术很多不同的项目也诞生了。这些项目中的一类就涉及到容器编排。当前已出现了许多不同的方案,针对云专有的解决方案,例如Amazon ECS,开源的解决方案有如Kubernetes。这些方案都有一个相同的目标,那就是使容器编排更简单。但是,这些工具所提供的真的如它们所声称那样,管理更简单,部署更简单吗?

在本文中,我们先简要谈论下容器化概念,后面我将使用两种不同的编排方法来部署一个AI-API架构,一个包含简单API的AI聊天机器人。一种是使用Kubernetes,另外一种是只使用基于容器的手动控制管理平面。

容器与虚拟机

在AWS开始在云上提供虚拟机(VM)后,全球大多数服务器部署现在都在使用某类虚拟化系统。如果你始终可以100%利用资源的话,那么在价格与性能方面,虚拟机往往更加昂贵。假设你是购买基于它们构建的免费服务层的话,例如RDS,它们现在能更容易,更快地部署,更易于管理并且需要的维护更少。就像物理服务器和虚拟机之间的差异一样,容器化使得管理和部署服务器或服务变得更加容易。

两种不同的管理容器的方式对比

虽然虚拟机可以共享物理资源,但它们必须在其之上引入自己的操作系统,当然包括内核。虽然这能创建一个理想的隔离环境,但它也会产生自己的问题,例如运行多个内核和操作系统时浪费的资源以及出于安全原因的更新和维护。容器化就是通过利用内核命名空间创建具有自己的文件系统的隔离工作区。因此仅使用一个操作系统并共享相同的内核,来运行多个(服务器)应用程序,这就是容器的意义所在。

两种不同的管理容器的方式对比

容器同时也具备分层镜像的功能,虽然虚拟机解决方案中也存在这样的东西,但它没有像容器那样充分利用。大多数应用程序有时需要数小时才能构建和安装,而一个应用程序镜像甚至可以在几秒钟内下载并运行。如果你需要运行容器化的WordPress安装,那么你需要运行Docker来运行WordPress。容器镜像可以缓存无需多次重复下载。

接下来我们开始讨论容器编排。

容器编排

创建和管理容器的便捷性使许多自动化工作流程得以实现。在最初,所有基于容器的部署都使用一些专有技术栈来编排和运行它们。但是在Docker开源并开始统治该领域之后,它逐渐成为运行容器的标准,因此Docker镜像也逐渐成为分发容器镜像的标准方式。所以很多关于自定义编排的项目出现时都会以Docker为基础。

下图是我想要创建的第一种编排类型。但我需要解决的一个很重要的问题就是启动时间。我们的软件启动时间很长,所以我们希望始终有一个服务处于就绪状态可以服务于每个请求。在我的架构中,我希望有一个控制器容器可以在我准备新的容器时作为负载均衡器以及HTTP服务器将请求转发到正确的AI容器去。

两种不同的管理容器的方式对比

我使用docker-py库来完成这项工作,并使用了flask来提供HTTP请求。Docker.py库有着很好的文档而且很容易使用,只需为控制器和AI应用分别创建了一个Dockerfile。这个过程很简单,在开发过程中我学到了更多关于Docker的知识。虽然这是我创建的一个非常原始的专有容器编排解决方案,但它总算完成自己的使命。

好了,接下来是时候介绍下Kubernetes了,因为基本上它为编排提供了类似的目的,我已经创建了基于Kubernetes的解决方案来减少需要编写的代码量。

为了在Kubernetes中应用相同的思路,我不得不从一开始就重新思考我的架构。因为Kubernetes仅仅只需要你提供一个部署的模式(像Amazon ECS那样)并尝试将该模式保持在稳定状态。当我为下次请求创建自己的容器时,编排系统应该能适时在类似这样的过程中准备或是处理一些事情,经过一番搜索,我发现可以使用Kubernetes的标签功能来完成我的程序。

两种不同的管理容器的方式对比

我的想法是将所有新创建的AI容器打上assigned:not_assigned的标签,使之应用到每个容器。我需要声明,我想要其中3个包含标签assigned:not_assigned。当新请求到来时,我的控制器容器应该将此标签更改为assigned:assigned。更改标签会引起状态改变,3个已部署容器中的2个将会带有assigned:not_assigned的标签。当Kubernetes观察到状态被变更时,它将用assigned:not_assigned标签启动另一个新的容器。

因此,只是为了管理Kubernetes集群,我又编写了另一个类。它实际上并不需要实现如创建或管理容器的某些功能,但它需要能转发请求并删除标签。完成这个工作删除了大量代码,可想而知维护的代码行数量也减少了,这意味着攻击面更小了。在Pod中创建与Kubernetes主机的连接非常简单。此后我又花了一些时间来创建服务并将请求路由到正确的容器。

结论

在这个试验中,我尝试使用现成的容器编排解决方案和我自己编写的编排工具。编写我自己的编排解决方案很快,其中的概念并不陌生,并且会有很多文章指导如何去做。但是当切换到Kubernetes时,一切都变了。为了能够使用Kubernetes,关于容器的知识是不够的,我必须学习新的概念和一种新的思维方式以便能够按我的需求来使用它,例如在Kubernetes中部署和服务作为第一公民,而不是容器。但最后,我们可以放心地假设,使用Kubernetes进行容器编排能使我的架构更安全,更稳定,因为我的软件中的大多数复杂的部分,例如维持稳定数量的容器,这些都是在Google使用并推广的一个开源项目的帮助下完成的。

【编辑推荐】

  1. 为什么说无服务器是2018年构建API的唯一之道?
  2. 开发者都应该知道的15个API
  3. 再谈前后端API签名安全?
  4. Google 与 Mozilla 开发 API 让 Web 应用轻松编辑本地文件
  5. 谷歌调高API最低开发级别:Android 4.0系统宣告退役
【责任编辑:未丽燕 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Eclipse从入门到精通(第2版)

本书为《Eclipse从入门到精通》一书的全新改版。本书以最新的Eclipse 3.2作为写作版本。全书分为5篇:起步篇介绍了Eclipse及相关插件的安装...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊
乐东县 北粉浆胡同 槐树岭社区 上泸镇 曾家河心
冠市镇 庞家佐乡 新楼社区 大码头街道 老坝港乡
电子游戏 澳门永利官网 宝马会官网 ag电子游戏破解 葡京投注网
威尼斯人娱乐网址 棋牌游戏大全 宝马会网址 捕鱼达人网络版 手机百家乐
澳门威尼斯人官网 葡京网上赌场 二十一点娱乐 澳门大发888娱乐 澳门大富豪游戏娱乐
澳门星际网站 二十一点游戏赌场 庄闲平台 葡京官网注册 电子游戏下载
老虎机定位器 澳门大富豪网址 现金三公注册网址 牛牛游戏下载 现金骰宝 年度十大电子游戏 大小点游戏 玩什么游戏可以挣钱 电子游戏厅 方法奇葩赌博网 巴黎人网站 pt电子游戏哪个最会爆 澳门巴黎人游戏 澳门龙虎斗注册 澳门大富豪网站 押大小排行 真钱打牌 明升网站 十三水技巧 电子游戏下载 二十一点平台 现金网游戏开户平台 澳门百老汇游戏官网 皇博压大小 真钱捕鱼 跑马机游戏 赌博技巧 巴比伦赌场官网 现金三公 地下网址 捕鱼游戏技巧 英皇网站 手机玩游戏赚钱平台 现金网排行 pt电子游戏注册 赌博技巧 电脑玩游戏赚钱平台 海立方游戏 ag电子游戏排行 希尔顿官网 太阳网上压大小 现金赌钱游戏 现金棋牌游戏 真人网站网址 地下开户 九五至尊娱乐网址 澳门梭哈游戏官网 奇葩袖赌博网 鸿胜国际压大小 博狗扑克游戏 德州扑克游戏规则 庄闲代理 奔驰宝马老虎机下载 现金三公开户注册 免费试玩电子游戏 GT压大小 新濠天地注册 现金老虎机网站 纸牌赌博种类 乐天堂开户 澳门永利平台 电脑版捕鱼达人 玩电子游戏入门 斗牛游戏 bbin压大小 网上电子游戏网址 澳门网络下注平台 明升国际网址 明升娱乐 捕鱼达人电子游戏 mg电子游戏试玩 二十一点游戏赌场 澳门万利赌场官网 大小对比网站 现金电子游戏 电子游戏实用技术 老虎机破解器 澳门梭哈官网 澳门百老汇赌场注册 千炮捕鱼兑换现金 网上合法赌场 PT电子游戏 波克棋牌官方下载 天天棋牌 凤凰棋牌 美少女战士电子游戏 什么游戏可以赚人民币 银河国际娱乐 澳门番摊官网 澳门梭哈官网 胜博发电子游戏 电子游戏打鱼机 澳门现金网 大三巴网站 PT电子游戏 澳门银河国际娱乐