Swarm
Swarm是Docker开发的原生集群工具,Swarm使用标准的Docker API,这意味着容器能够使用Docker客户端命令启动,Swarm会选择合适的主机来运行容器。
Swarm的基本架构很简单:每个主机运行一个Swarm代理,一个主机运行Swarm管理器(在测试的集群中,这个主机也可以运行代理),这个管理器负责主机上容器的编排和调度。Swarm能以高可用性模式(etcd、Consul 或ZooKeeper 中任何一个都可以用来将故障转移给后备管理器处理)运行。当有新主机加入到集群,有几种不同的方式来发现新加的主机,在Swarm中也就是服务发现。默认情况下使用的是token,也就是在Docker Hub上会储存一个主机地址的列表。
Swarm的优势:
swarm API兼容docker API,使得swarm 学习成本低,同时架构简单,部署运维成本较低。
Swarm的劣势:
同样是因为API兼容,无法提供集群的更加精细的管理。
在网络方面,默认docker容器是通过桥接与NAT和主机外网络通信,这样就出现2个问题,一个是因为是NAT,外部主机无法主动访问到容器内(除了端口映射),另外默认桥接IP是一样的,这样会出现不同主机的容器有相同的IP的情况。这样两容器更加不能通信。同时网络性能方面,有人测试经过桥接的网络性能只有主机网络性能的70%。当然以上问题可以通过其他工具解决,比如用 Flannel 或者 OVS网桥。
在容器可靠性方面,相较于K8s的Replication Controllers可以监控并维持容器的生命,swarm在启动时刻