内容简介:kubernetes:kubernetes,是Google多年大规模容器管理技术的开源版本,是众多厂商推崇的docker管理优秀之作,随着越来越多的厂商不停地贡献代码,kubernetes功能也愈发完善swarm:
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容器集群管理工具的选择有了一个基本的认识,不管怎么选择,最终我们的目的都是为了减少人为干预,更智能的生产环境运维,所以应该根据实际情况斟酌选择。
———–
下面这里有很多 相关 教程 可以参考 https://www.aliyun.com/jiaocheng/topic_24443.html
例如下面的一个例子
- docker~swarm搭建docker高可用集群
- 摘要: 回到目录Swarm概念Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的DockerAPI接口作为其前端访问入口,换言之,各种形式的DockerClient(dockerclientinGo,docker_py,docker等)均可以直接与Swarm通信。Swarm几乎全部用 go 语言来完成开发,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节
-
回到目录
Swarm概念Swarm是Docker公司推出的用来管理docker集群,它将一群Docker宿主机变成一个单一的,虚拟的主机。Swarm使用标准的Docker API接口作为其前端访问入口,换言之,各种形式的Docker Client(docker client in Go, docker_py, docker等)均可以直接与Swarm通信。Swarm几乎全部用go语言来完成开发,Swarm0.2发布,相比0.1版本,0.2版本增加了一个新的策略来调度集群中的容器,使得在可用的节点上传播它们,以及支持更多的Docker命令以及集群驱动。
Swarm deamon只是一个调度器(Scheduler)加路由器(router),Swarm自己不运行容器,它只是接受docker客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm由于某些原因挂掉了,集群中的节点也会照常运行,当Swarm重新恢复运行之后,它会收集重建集群信息.
Swarm结构图
Swarm的基本命令docker node 用来显示集群的节点,默认建立时只有一个节点,当然也就谈不上高可用了,可以使用docker node –help来查看所有node参数
集群初始化 docker swarm init
当已经被初始化后,就不能重新执行这个操作了,使用docker node ls 来查看刚建立的集群
集群中的管理节点和工作节点功能图
添加管理节点 docker swarm join
Docker Swarm 命令中还需要添加一些选项:
* join:表明一个新的节点将被添加进 Swarm
* –manager:表明节点的性质(manager vs worker)
* –listen-addr:让一个新添加的节点可以访问 Swarm 内的其他节点
* 最后的参数就是第一管理节点的地址(即这一命令将被送到的那个节点)
注意:由于 –auto-accept manager 选项会在 Swarm 初始化的过程中被提供,所以第二管理节点会被自动接受。如果没有这一选项,那么第二管理节点需要被第一管理节点手动接受。
$ MANAGER2_IP=$(docker-machine ip manager2)docker-machine ssh manager2 docker swarm join –manager –listen-addr $MANAGER2_IP:2377 $MANAGER1_IP:2377
Swarn部署时使用的脚本,来自网络
下面是一小段用来创建 Docker 主机并部署 Swarm 的 Shell 脚本。当然了,管理/工作节点的数字都是可以随意改动的。
注意:创建两个管理节点和两个工作节点,仅仅是用来作示范。在工业生产中,我们可能需要在集群里搭建 3 个管理节点和 5 个工作节点。
# Define the number of managers/workersMANAGER=3WORKER=5# Create the Docker hostsfor i in $(seq 1 $MANAGER); do docker-machine create –driver virtualbox manager$i; donefor i in $(seq 1 $WORKER); do docker-machine create –driver virtualbox worker$i; done# Init the swarmdocker-machine ssh manager1 docker swarm init –auto-accept manager –auto-accept worker –listen-addr $(docker-machine ip manager1):2377# Add additional manager(s)for i in $(seq 2 $MANAGER); do docker-machine ssh manager$i docker swarm join –manager –listen-addr $(docker-machine ip manager$i):2377 $(docker-machine ip manager1):2377; done# Add workersfor i in $(seq 1 $WORKER); do docker-machine ssh worker$i docker swarm join –listen-addr $(docker-machine ip worker$i):2377 $(docker-machine ip manager1):2377; done对于上面文章中,只提到了集群,而没有谈到如何去使用,在建立集群后,服务的部署我们可以用
docker stack deploy -c test.yml test
来建立一个服务,同时可以使用docker service来查看已经运行的服务!
回到目录
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。