docker swarm 节点如何工作

  • A+
所属分类:容器

集群有两种节点类型:manager和worker

docker

管理节点

管理节点处理集群管理任务:

  • 维护集群状态
  • 调度服务
  • 提供集群HTTP API端点

使用Raft实现管理者维护整个集群内部状态的一致性以及其上运行的所有服务。 为了测试目的,可以运行单个管理节点。如果单个管理节点挂掉了,当前的服务还可以继续运行,但是不能管理集群了,需要新建一个新的集群来恢复,服务将会中断的。在生产环境下,必须确保管理节点的高可用性。

为了利用集群的容错能力,Docker建议根据高可用性要求实施奇数节点。当有多个管理节点,可以恢复故障管理节点,而不会导致停机。

  • 三个管理节点只允许故障一个管理节点
  • 五个管理节点允许同时故障两个管理节点
  • N个管理节点最多允许故障(N-1)/2个管理节点
  • Docker建议集群中最多有七个管理节点

添加更多的管理节点并不意味着增加了可扩展性或者提高了性能。一般来说,情况恰恰相反的。管理节点过多,节点间同步状态的信息就会增多了。

工作节点

工作节点也是Docker Engine的实例,唯一目的是执行容器。工作节点不参入Raft分布状态、调度决策和集群HTTP API服务。

可以创建一个管理节点的集群,但是不能在没有一个管理节点的情况下,拥有一个工作节点。

默认情况下,管理节点也是工作者。在单个管理节点的集群中,可以运行docker service create 命令并且调度所有任务在本地引擎上。

未了阻止调度器将任务到管理节点上,可以将管理节点可用状态设置为Drain。调度器将优雅的关闭Drain节点的任务,并将其调度到活动的其它节点上。同时,调度器不会再分配任务到Drain节点上了。

改变角色

可以通过运行docker node promote命令将工作节点提升为管理节点。也可以将管理节点降级为工作节点。

weinxin
微信公众号
扫一扫关注运维生存时间公众号,获取最新技术文章~
默北

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: