docker swarm 管理

  • A+
所属分类:容器

安装docker

互通端口

  • tcp 2377 集群管理通信端口
  • tcp & udp 7946 节点间通信端口
  • udp 4789 overlay网络通信接口 如果创建overlay网络使用加密选项--opt-encrypted,还需要确保50端口放开。

创建swarm

--advertise-addr 指定管理节点发布的地址。集群中的其它节点必须要能够访问该IP。 输出的内容包含新节点加入集群的命令。节点做为管理者还是工作者取决于--token值。

节点后面的ID表明当前连接到的节点。 Docker Engine swarm模式自动的将HOSTNAME指定为节点主机名。

添加节点到swarm

一旦创建了管理节点,就可以添加工作节点了。

列出集群中所有节点。MANAGER列标识集群中的管理节点。此列为空说明是工作节点。

在非manager节点上执行docker node ls 报错

部署服务

  • docker service create 命令创建服务
  • --name 定义服务名称
  • --replicas 指定运行实例副本
  • 参数 alpine ping docker.com 定义服务为执行ping docker.com命令的Alpine Linux容器。

docker service ls 列出运行的服务。

检查集群服务

查看运行服务的详细信息

docker service ps 查看哪些节点运行了该服务。 docker ps 在运行该任务的节点上执行以查看该任务容器的详细信息。 docker node ps [NODE-HOSTNAME] 查看集群内节点运行的任务。

缩放集群中服务

通过docker service scale =命令来扩展

  • 集群创建了4个新的任务来扩展helloworld。任务分布在集群中的三个节点中,其中一个在manager1节点上。
  • 默认情况下管理节点也可以分配任务。可以设置管理节点为DRAIN,只用于管理,任务全分配到工作者节点上。

删除服务

即使服务被删除,任务容器可能需要少许时间来清理这些容器。

滚动更新服务

redis 3.0.6 升级为 3.0.7.

  • 出现 Message: update paused due to failure or early termination of task f0jk6wc0ebuo8h2o8xrgyow4h 执行 docker service update

可以在服务部署时配置滚动更新策略:

  • --update-delay 配置更新服务任务之间的延迟时间。数字加上时间单位,如10m10s标识10分钟10秒。
  • 默认情况下,更新调度一次更新一个任务。--update-parallelism来配置更新调度同时更新的最大服务任务数。
  • 默认情况下,当单个任务的更新返回RUNNING状况时,调度另一个任务更新,直至所有更新都完成为止。如果在更新期间,更新的任务返回FAILED,则暂停更新。可以通过--update-failure-action标志来控制Docker服务创建或更新的行为。

默认情况下,调度应用滚动更新如下:

  • 停止第一个任务
  • 调度已停止的任务更新
  • 启动已更新完成的容器
  • 如果更新任务返回RUNNING,等待指定的延迟时间,然后启动下一个任务。
  • 如果在更新期间,任务返回FAILED,更新将暂停。

移除集群上的某个节点

节点AVAILABILITY列为Active,表明该节点可以接收任务。 如果需要对某个节点进行维护,可以将该节点设置为DRAIN。DRAIN状态节点将阻止从管理节点接收新的任务,同时,管理节点将停止该节点上当前运行的任务,并在其它Active状态的节点上启动该任务副本。

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

发表评论

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