一、k8s设计思想更先进

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

1.k8s的核心功能图

2.k8s的全局架构图


kube-apiserver:API服务
Kube-scheduler:调度
kube-controller-manager:容器编排
etcd:持久化
kubelet:节点核心部分,负责同容器运行时打交道、与Device Plugin交互管理宿主机GPU等物理设备组件 ,调用网络和存储插件为容器配置网络和持久化存储
- CRI:Container Runtime Interface 容器远程调用接口,定义了容器运行时的各项核心操作)
- Device Plugin:kubelet通过grpc调用这个插件来管理CPU等宿主机物理设备
- CNI:Container Networking Interface,容器配置网络接口
- CSI:Container Storage Interface,容器持久化存储接口

把微服务比喻成人的管理

把微服务理解为人,服务治理解决的是人的沟通,人太多了就需要生存空间和沟通方式的优化,这就需要集群和编排。
compose和swarm可以解决少数人之间的关系,人多了会麻烦。
而k8s是站在上帝视角的高度抽象,看到了哪些组织以及不同组织有什么样的特点(Job、CronJob、Autoscaler、StatefulSet、DaemonSet...),不同组织之间交流可能需要什么(ConfigMap,Secret...),这样比较紧密的人在相同的pod中,通过Service-不会变更的手机号,来和不同的组织进行沟通,Deployment、RC帮助人们快速构建组织。
k8s就是把组织协调这项管理学落实到了计算机工程上

二、功能对比

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

swarm中最小单元是容器,而k8s是pod,pod可以由多个容器组成,在pod内共享volume和namespace,同一pod内的通信更为高效
pod有什么好处?
例如有一个web容器,为了收集web日志,需要安装一个日志插件,如果把插件安装在web容器内:
1.如果插件有更新,即使服务没有变化也要重新把镜像构建部署一遍

  1. 如果插件存在内存泄露问题,整个容器都会被连累
    而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. 【转帖】为什么有了Compose和Swarm,还会有Kubernetes的出现?

    为什么有了Compose和Swarm,还会有Kubernetes的出现? https://www.cnblogs.com/chenqionghe/p/11474486.html 图非常好 一.k8s设 ...

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

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

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

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

  4. 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 ...

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

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

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

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

  7. docker swarm和compose 的使用(阿里)

    基本的docker使用参考:Docker 入门 到部署Web 程序- (阿里面试常用的docker命令和优点) 昨天去阿里面试 问我如果给你5台服务器 如何部署docker,我说一个个拷贝,面试官听了 ...

  8. Docker三剑客之Swarm介绍

    DockOne技术分享(二十): 我用swarm在多台物理机调度管理容器,用ovs实现跨主机的容器互联问题 [编者的话]Swarm项目是Docker公司发布三剑客中的一员,用来提供容器集群服务,目的是 ...

  9. Docker(六):Docker 三剑客之 Docker Swarm

    实践中会发现,生产环境中使用单个 Docker 节点是远远不够的,搭建 Docker 集群势在必行.然而,面对 Kubernetes, Mesos 以及 Swarm 等众多容器集群系统,我们该如何选择 ...

随机推荐

  1. IO流总结1

    一.什么是流? 流就是字节序列的抽象概念,能被连续读取数据的数据源和能被连续写入数据的接收端就是流,流机制是Java及C++中的一个重要机制,通过流我们可以自由地控制文件.内存.IO设备等数据的流向. ...

  2. 一份关于.NET Core云原生采用情况调查

    调查背景 Kubernetes 越来越多地在生产环境中使用,围绕 Kubernetes 的整个生态系统在不断演进,新的工具和解决方案也在持续发布.云原生计算的发展驱动着各个企业转向遵循云原生原则(启动 ...

  3. S2:c#继承

    在C#中,如果一个类后面通过冒号又跟了另外一个类,那么我们就称冒号前面的类为子类,冒号后面的类为父类.这种书写类的方式放映出来的关系就称为类的继承关系. 1.子类:派生类 父类:基类或者超类 满足is ...

  4. L4170[CQOI2007]涂色

    #include <bits/stdc++.h> using namespace std; #define rep(i, a, b) for (int i = a; i <= b; ...

  5. 用命令将本地jar包导入到本地maven仓库

    [**前情提要**]在日常开发过程中,我们总是不可避免的需要依赖某些不在中央仓库,同时也不在本地仓库中的jar包,这是我们就需要使用命令行将需要导入本地仓库中的jar包导入本地仓库,使得项目依赖本地仓 ...

  6. hadoop学习(六)----HDFS的shell操作

    HDFS所有命令: [uploaduser@rickiyang ~]$ hadoop fs Usage: hadoop fs [generic options] [-appendToFile < ...

  7. jmeter界面字体修改

    实际应用中发现,同样是win10系统,显示器屏幕尺寸大小不同,jmeter界面字体展示也不一样,标准屏幕还可以,大屏幕下不能自动适应屏幕大小放大而且还变的更小.在查询解决方法时,发现有朋友出现类似情况 ...

  8. 工作中常见的五种技术leader

    力不从心型 在工作中有种技术leader,总认为自己是最好的.在方案设计的时候,自己有一种方案,下属有一种方案.leader非要别人听他的.如果两种方案没有优劣之分,比较建议的做法是让真正实施的人按照 ...

  9. 浅谈IDEA搭建SSM框架的集成

    前言 学习完MyBatis,Spring,SpringMVC之后,我们需要做的就是将这三者联系起来,Spring实现业务对象管理,Spring MVC负责请求的转发和视图管理, MyBatis作为数据 ...

  10. 浅谈Http与Https

    大家都知道,在客户端与服务器数据传输的过程中,http协议的传输是不安全的,也就是一般情况下http是明文传输的.但https协议的数据传输是安全的,也就是说https数据的传输是经过加密. 在客户端 ...