为什么有了Compose和Swarm,还会有Kubernetes的出现?

https://www.cnblogs.com/chenqionghe/p/11474486.html

图非常好

一、k8s设计思想更先进

k8s的主要设置思想,是从更宏观的角度,以统一的方式来定义任务之间的各种关系

1.k8s的核心功能图

2.k8s的全局架构图

把微服务比喻为人,服务治理解决的是人的沟通,人太多了就需要生存空间和沟通方式的优化,这就需要集群和编排。
compose和swarm可以解决少数人之间的关系,比如把手机号给你,你就可以方便的找到我,但是如果手机号变更的时候就会麻烦,人多了也会麻烦。
而k8s是站在上帝视角的高度抽象,看到了

  1. 总体有哪些组织,不同组织有什么样的特点(Job、CronJob、Autoscaler、StatefulSet、DaemonSet...)
  2. 不同组织之间交流可能需要什么(ConfigMap,Secret...),这样比较紧密的人在相同的pod中,通过Service-不会变更的手机号,来和不同的组织进行沟通,
  3. 帮助人们快速构建组织(Deployment、RC)。

k8s就是把组织协调这项管理学落实到了计算机工程上

二、功能对比

1. swarm偏重的是容器的部署,而k8s偏重应用的部署

swarm中最小单元是容器,而k8s是pod,pod可以由多个容器组成,在pod内共享volume和namespace,同一pod内的通信更为高效
pod有什么好处?
例如有一个web容器,为了收集web日志,需要安装一个日志插件,如果把插件安装在web容器内:

  1. 如果插件有更新,即使服务没有变化也要重新把镜像构建部署一遍
  2. 如果插件存在内存泄露问题,整个容器都会被连累

而pod可以为日志插件和web应用各自创建一个容器,两者共享volume,web应用只需要日志保存到volume,两个容器各自有自己的镜像,更新互不影响

2. k8s比swarm有更多的调度策略,更适合大规模容器的的管理

swarm只有三种调度策略:spread、binpack、random,而k8s策略数更多多,还有端口冲突策略、容器挂载卷冲突策略、指定特定宿主机策略等。
Composer中,通过link将容器关联起来,如DB的的连接写入环境变量供进程使用,如果DB发生变化(如镜像)
集群中的节点,只要在同一network内,服务之间

3. k8s的负载均衡机制比swarm更灵活

swarm采用的是nginx+consul。
consul保存了各个docker中应用的网络信息,nginx在compose时,在dockerfile中指定consul的地址,配置到nginx配置中,从而实现负载均衡,这样有个缺点,就是新添加的容器IP和网络需要手动添加到nginx文件中
而k8s负载均衡通过service实现,没有容器IP变更问题,只要有相同的label的pod都可以通过service访问,新添加的容器IP和网络不会影响负载均衡器

4.k8s支持弹性伸缩

k8s可以根据Pod的CPU、内存自动的调整Pod的个数,保障服务的可用性,swarm则不具备这样的功能

【转帖】为什么有了Compose和Swarm,还会有Kubernetes的出现?的更多相关文章

  1. DCOS实践分享(2):基于Docker Compose和Swarm的Docker化之路

    2016 年1 月 23 日,北京史上气温最低的一天. 在下午 1 点半的时候,由 DaoCloud 赞助的 2016 年度首次 Docker Meetup 准时开始. 在这次Meetup中,我分享了 ...

  2. 为什么有了Compose和Swarm,还会有Kubernetes的出现?

    一.k8s设计思想更先进 k8s的主要设置思想,是从更宏观的角度,以统一的方式来定义任务之间的各种关系 1.k8s的核心功能图 2.k8s的全局架构图 kube-apiserver:API服务 Kub ...

  3. Docker Machine, Compose, and Swarm: How They Work Together

    The three tools are now neatly packaged into what’s called the Docker Toolbox. Docker Machine1/ crea ...

  4. Dokcer基础使用总结(Dockerfile、Compose、Swarm)

    Dokcer基础 查看Linux版本 uname -r 查看Linux详尽信息 cat /etc/*elease CentOS Linux release (Core) NAME="Cent ...

  5. [转帖]看完这篇文章你还敢说你懂JVM吗?

    看完这篇文章你还敢说你懂JVM吗? 在一些物理内存为8g的服务器上,主要运行一个Java服务,系统内存分配如下:Java服务的JVM堆大小设置为6g,一个监控进程占用大约 600m,Linux自身使用 ...

  6. [转帖]Tensor是神马?为什么还会Flow?

    Tensor是神马?为什么还会Flow? 互联网爱好者 百家号17-05-2310:03 大数据文摘作品,转载要求见文末 编译 | 邵胖胖,江凡,笪洁琼,Aileen 也许你已经下载了TensorFl ...

  7. [转帖]Oracle字符集的查看与修改 --- 还未尝试 找个周六 试试.

    Oracle 字符集的查看和修改 感谢原作者 改天试试 https://www.cnblogs.com/rootq/articles/2049324.html 一.什么是Oracle字符集 Oracl ...

  8. Dock的生态开源技术(Etcd&Machine&Compose&Swarm&Mesos&Kubernetes)

    Etcd CoreOS公司开源的高可用分布式键值数据库Etcd,该项目已经被广泛应用到分布式系统的一致性实现和服务发现中,基于Go语言实现. Etcd就是专门为集群环境设计,可以很好地实现数据一致性, ...

  9. Docker - 使用Swarm和compose部署服务(containers)

    前言 在之前使用Docker的过程中,一直是用 Docker run 命令单独启动container后再加入Overlay网络的方式实现部署工作的. 这种方式看似直接,但是随着服务所包含的contai ...

随机推荐

  1. LVS是什么及作用?

    LVS的概念和重要性 LVS: 概念:是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统 作用:举例 像有三个小区,但是工作的时间和休息的时间不一样 ...

  2. OpenCV 学习笔记(11)像素级别指针操作

    //优化两图的连接处,使得拼接自然 void OptimizeSeam(Mat& img1, Mat& trans, Mat& dst) { int start = MIN(c ...

  3. 02_搭建HTTP客户端与服务器(数通华为)

    1.选择客户端和服务端: 2.服务端创建HTTP目录: 3.客户端访问下载:

  4. linux 打印当前工作目录

    pwd

  5. 大文件上传组件webupload插件

    之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...

  6. JS函数基础

    一.函数 1.函数是什么 具有特定功能的n条语句的封装体. 只有函数是可执行的,其它类型的数据是不可执行的. 函数也是对象. 2.为什么要用函数 提高代码复用 便于阅读和交流 3.如何定义函数 函数声 ...

  7. 13--网页,网站,微信公众号基础入门(PHP获取网页的get请求)

    https://www.cnblogs.com/yangfengwu/p/11148976.html 大家在访问网页的时候有没有注意一件事情 现在咱来看这种哈 现在咱做个功能哈,类似于这样 长话短说 ...

  8. 51 Nod 1135 原根

    基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 设m是正整数,a是整数,若a模m的阶等于φ(m),则称a为模m的一个原根.(其中φ(m)表示m的欧拉函数) 给出1个质数P ...

  9. 洛谷 P3806 【模板】点分治1-树分治(点分治,容斥版) 模板题-树上距离为k的点对是否存在

    P3806 [模板]点分治1 题目背景 感谢hzwer的点分治互测. 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在. 输入格式 n,m 接下来n-1条边a,b,c描述a到b有一条长度 ...

  10. C++ 中的 inline 用法

    1.引入 inline 关键字的原因 在 c/c++ 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数. 栈空间就是指放置程序的局部数 ...