swarm与kubernetes的对比

前言:docker swarm 与kubernetes都是集群管理工具,一个是docker原生自带,一个是谷歌项目下的容器编排工具,那么到底他们到底有什么有缺点呢?

kubernetes:

kubernetes,是Google多年大规模容器管理技术的开源版本,是众多厂商推崇的docker管理优秀之作,随着越来越多的厂商不停地贡献代码,kubernetes功能也愈发完善

swarm:

Swarm是Docker公司在2014年12月初发布的一套用来管理Docker集群的较为简单的工具,由于Swarm使用标准的Docker API接口作为其前端访问入口,所以各种形式的Docker Client(dockerclient in go, docker_py, docker等)都可以直接与Swarm通信。随着Swarm0.2发布,swarm增加了新的策略来调度集群中的容器方式,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。

swarm结构图

示例

那么到底是docker亲儿子swarm管理上更胜一筹还是Google的kubernetes管理更加受人们青睐,下面是本人总结的对比详情。

swarm与kubernetes

swarm优点:

1 架构简单,部署运维成本较低

docker swarm 集群模式由于原生态集成到docker-engine中,所以首先学习成本低,对于使用docker-engine 1.12版本及以上可以平滑过渡,service服务可以满足动态增减容器个数,同时具备自身的负载均衡,swarm管理者多台设定保证了机器在出错后有一个良好的容灾机制

2 启动速度快

swarm集群只会有两层交互,容器启动是毫秒级

swarm劣势:

1 无法提供更精细的管理

swarm API兼容docker API,所以使得swarm无法提供集群的更加精细的管理

2 网络问题

在网络方面,默认docker容器是通过桥接与NAT和主机外网络通信,这样就出现2个问题,一个是因为是NAT,外部主机无法主动访问到容器内(除了端口映射),另外默认桥接IP是一样的,这样会出现不同主机的容器有相同的IP的情况。这样两容器更加不能通信。同时网络性能方面,有人测试经过桥接的网络性能只有主机网络性能的70%。当然以上问题可以通过其他工具解决,比如用 Flannel 或者 OVS网桥

3 容器可靠性

在容器可靠性方面,相较于Kubernetes的Replication Controllers可以监控并维持容器的生命,swarm在启动时刻可以控制容器启动,在启动后,如果容器或者容器主机崩溃,swarm没有机制来保证容器的运行。

kubernetes优点:

1 管理更趋于完善稳定

kubernetes 集群管理更趋于完善稳定,同时pod功能上比swarm的service更加强大

2 健康机制完善

Replication Controllers可以监控并维持容器的生命

3 轻松应对复杂的网络环境

kubernetes默认使用Flannel作为overlay网络。

Flannel是CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(OverlayNetwork)工具,其目的在于帮助每一个使用 Kuberentes 的CoreOS 主机拥有一个完整的子网。

kubernetes劣势:

1 配置、搭建稍显复杂,学习成本高

由于配置复杂,学习成本相对较高,对应运维的成本相对高点

2 启动速度稍逊

kubernetes会有五层交互,启动是秒级,启动速度慢于swarm

通过以上介绍,相信大家应该对docker容器集群管理工具的选择有了一个基本的认识,不管怎么选择,最终我们的目的都是为了减少人为干预,更智能的生产环境运维,所以应该根据实际情况斟酌选择。

猜你喜欢

转载自blog.csdn.net/weixin_41282397/article/details/80771237