k8s的主要设置思想,是从更宏观的角度,以统一的方式来定义任务之间的各类关系html
把微服务比喻为人,服务治理解决的是人的沟通,人太多了就须要生存空间和沟通方式的优化,这就须要集群和编排。 compose和swarm能够解决少数人之间的关系,好比把手机号给你,你就能够方便的找到我,可是若是手机号变动的时候就会麻烦,人多了也会麻烦。 而k8s是站在上帝视角的高度抽象,看到了nginx
k8s就是把组织协调这项管理学落实到了计算机工程上web
swarm中最小单元是容器,而k8s是pod,pod能够由多个容器组成,在pod内共享volume和namespace,同一pod内的通讯更为高效 pod有什么好处? 例若有一个web容器,为了收集web日志,须要安装一个日志插件,若是把插件安装在web容器内:docker
而pod能够为日志插件和web应用各自建立一个容器,二者共享volume,web应用只须要日志保存到volume,两个容器各自有本身的镜像,更新互不影响网络
swarm只有三种调度策略:spread、binpack、random,而k8s策略数更多多,还有端口冲突策略、容器挂载卷冲突策略、指定特定宿主机策略等。 Composer中,经过link将容器关联起来,如DB的的链接写入环境变量供进程使用,若是DB发生变化(如镜像) 集群中的节点,只要在同一network内,服务之间架构
swarm采用的是nginx+consul。 consul保存了各个docker中应用的网络信息,nginx在compose时,在dockerfile中指定consul的地址,配置到nginx配置中,从而实现负载均衡,这样有个缺点,就是新添加的容器IP和网络须要手动添加到nginx文件中 而k8s负载均衡经过service实现,没有容器IP变动问题,只要有相同的label的pod均可以经过service访问,新添加的容器IP和网络不会影响负载均衡器负载均衡
k8s能够根据Pod的CPU、内存自动的调整Pod的个数,保障服务的可用性,swarm则不具有这样的功能dom
原文出处:https://www.cnblogs.com/chenqionghe/p/11474486.html微服务