转 Docker Swarm vs Kubernetes
容器化已经改变我们部署软件和微服务开发的方式。如果你刚听说容器, 这篇博客帮你入门。
什么是容器编排
容器能够把服务打包成基本单元,你可以把它部署到任何地方:本地机器、测试环境或者生产系统。但是在生产环境中,你却不能把所有容器都运行在一台机器上,因为会用光系统的资源。你需要多个机器(或者节点)以集群(不同机器通过网络通信)的方式运行,然后把容器部署到集群中。现在问题变成,如果我有多个机器/节点组成的集群,我该如何决定容器运行在哪台机器上呢?有了编排软件,你只需要告诉它我要部署容器,剩下的事情交给编排软件即可。
编排软件负责以下几点:
- 选择最适合部署容器的机器。最适合指的是拥有最多空闲资源,或者说如果容器能获得更多的运行内存,比如Redis。
- 发生机器故障,能自动把故障机器上的容器部署到其它节点。
- 如果集群添加了新的机器,重新平衡容器的分配情况。
- 如果容器故障了,重启它。
- ...
现在你已经理解为什么需要容器编排了,下面我们一起看下当下最流行的两个选择以及它们间的对比。
Docker Swarm
Swarm是为Docker开发原生的集群管理引擎。任何适配Docker container的工具、服务或软件都可以很好地兼容Swarm。下面是一些Docker Swarm的优缺点:
优点:
- 容易上手,“开箱即用”的用户体验。
- 零“单点故障”(single-point-of-failure)架构。
- 自动生成证书,默认提供安全机制。
- 向后兼容组件。
- 开源
缺点:
- 处于项目启动/早期开发阶段。我们不推荐商业应用上使用。随着时间推移,它会更加成熟。
- 功能简单有限。
Kubernetes
Kubernetes是一个Google主导的生产就绪、企业级、成熟的编排平台。它的利弊有:
优点:
- 生产就绪、企业级。它被很多公司用于规模生产环境。
- 相比Docker Swarm,它更成熟。
- 可用于公有云、私有云、混合云等多种云环境。
- 模块化。
- 自愈能力:自动布局、自动重启、自动备份、自动伸缩。
- 开源。
- 因为模块化设计,可被用于部署任何架构。
缺点:
- 难于部署。如果不使用云服务商Azure,Google或者Amazon,在你的集群中搭建Kubernetes环境非常困难。大部分云服务商都提供了一键安装功能。
- 比Docker Swarm更陡峭的学习曲线。它不使用Docker CLI。
CloudBoost生产环境使用了60节点的Kubunertes集群,我们是无服务+BaaS(backend as a service)架构,开发者不用关心重复的任务像:认证、通知、邮件服务、管理和扩展数据库、文件、缓存等,这减少了一半的开发时间。我们使用MongoDB和Redis集群做数据存储,NodeJS支撑我们大部分微服务。CloudBoost完全开源,遵循Apache 2 License开源协议,所以你可以随意修改代码,在你的服务器上免费安装。GitHub地址 点这里 。
我们还提供了一个Docker Cloud/Compose file ,你可以直接使用它安装CloudBoost。
如果你希望深入了解我们如何在生产环境使用Kubernetes。可以阅读 这篇博客 。
如果你希望快速启动集群,不运行关键应用,或者快速入门编排工具,我推荐Docker Swarm。如果你的场景接近商业环境,你应该考虑Kubernetes。
转 Docker Swarm vs Kubernetes的更多相关文章
- Docker,Docker Compose,Docker Swarm,Kubernetes之间的区别
Dcoker Docker 这个东西所扮演的角色,容易理解,它是一个容器引擎,也就是说实际上我们的容器最终是由Docker创建,运行在Docker中,其他相关的容器技术都是以Docker为基础,它是我 ...
- Docker Swarm和Kubernetes在大规模集群中的性能比较
Contents 这篇文章主要针对Docker Swarm和Kubernetes在大规模部署的条件下的3个问题展开讨论.在大规模部署下,它们的性能如何?它们是否可以被批量操作?需要采取何种措施来支持他 ...
- Docker Clustering Tools Compared: Kubernetes vs Docker Swarm
https://technologyconversations.com/2015/11/04/docker-clustering-tools-compared-kubernetes-vs-docker ...
- 生产环境中使用Docker Swarm的一些建议
译者按: 实践中会发现,生产环境中使用单个Docker节点是远远不够的,搭建Docker集群势在必行.然而,面对Kubernetes, Mesos以及Swarm等众多容器集群系统,我们该如何选择呢?它 ...
- Docker Swarm 中最重要的概念- 每天5分钟玩转 Docker 容器技术(94)
从主机的层面来看,Docker Swarm 管理的是 Docker Host 集群.所以先来讨论一个重要的概念 - 集群化(Clustering). 服务器集群由一组网络上相互连接的服务器组成,它们一 ...
- Docker(六):Docker 三剑客之 Docker Swarm
实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择 ...
- docker swarm 集群及可视化界面的安装及配置
docker swarm 集群及可视化界面的安装及配置 2016-12-14 16:08:46 标签:swarm consul registrator 原创作品,允许转载,转载时请务必以超链接形式标明 ...
- Docker三剑客之Docker Swarm
一.什么是Docker Swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...
- 20、docker swarm
Swarm是Docker官方提供的一款集群管理工具,其主要作用是把若干台Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各种Docker资源.Swarm和Kuber ...
随机推荐
- VS2015 android 设计器不能可视化问题解决。
近期安装了VS2015,体验了一下android 的开发,按模板创建执行了个,试下效果非常不错.也能够可视化设计.但昨天再次打开或创建一个android程序后,设计界面直接不能显示,显示错误:(可能是 ...
- 每天一个JavaScript实例-获取元素当前高度
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...
- 解决UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 12: ordinal not in range(128)的编码问题
当我在运行一个基于scrapy的爬虫时出现UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 12: ordina ...
- Jedis学习使用(java操作redis)
Jedis 是 Redis 官方首选的 Java client开发包. 工作过程总结的一个演示样例.贴出来,例如以下: package com.wujintao.redis; import java. ...
- IO流-获取指定目录下文件夹和文件对象【File类】
一.运用File类实现获取指定目录下文件夹和文件对象 1.File类 2.方法: 获取文件绝对路径 :getAbsolutePath 案例: import java.io.File; /** * 获取 ...
- 识别IE11浏览器
现在俺们做的系统十分高大上,用IE的话非要上IE11或以上版本. 咋检测呢?检测到用户用IE.且IE低于IE11的话就提示他升级浏览器呢?可以酱紫: var _IE = (function (d, w ...
- website项目的reference问题
right click on website project--> property pages dll dependency Check the type column,if you have ...
- EF3:Entity Framework三种开发模式实现数据访问
前言 Entity Framework支持Database First.Model First和Code Only三种开发模式,各模式的开发流程大相径庭,开发体验完全不一样.三种开发模式各有优缺点,对 ...
- 安装tensorflow的最简单方法(Ubuntu 16.04 && CentOS)
先说点题外话:在用anaconda安装很多次tensorflow失败之后,我放弃了,如果你遇到这样的问题:Traceback (most recent call last)-如果不是因为pip版本,就 ...
- [Usaco2017 Feb]Why Did the Cow Cross the RoadII
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=4993 [算法] 动态规划 转移类似于求LCS [代码] #include<bi ...