Skip to main content

Swarm

Komodo 可以通过 Swarm 资源来管理 Docker Swarm 集群。连接你的 Swarm 管理节点,即可通过统一界面管理节点、服务、堆栈、配置(configs)和密钥(secrets)。

配置

一个 Swarm 资源指向一个或多个管理节点(manager nodes) —— 这些是已经安装了 Periphery 并作为管理节点加入 Docker Swarm 的服务器。如果某个管理节点不可达,Komodo 会尝试列表中的下一个。

[[swarm]]
name = "production-swarm"
[swarm.config]
server_ids = ["manager-01", "manager-02", "manager-03"]
send_unhealthy_alerts = true

配置字段

FieldDescriptionDefault
serversSwarm 管理节点的服务器名称 / ID 列表。失败时会按顺序逐一尝试。[]
send_unhealthy_alerts当节点或任务不健康时发送告警。true
maintenance_windows抑制告警的计划维护窗口。[]
links资源头部显示的快捷链接。[]

快速开始

要在 Komodo 中使用 Docker Swarm,你首先需要在某个已连接的服务器上初始化一个 Swarm。

1. 初始化 Swarm

SSH 进入你的服务器(或使用 Komodo 终端)并运行 docker swarm init

docker swarm init --advertise-addr <SERVER_IP>

2. 在 Komodo 中创建 Swarm 资源

创建一个新的 Swarm 资源,并将该服务器添加为管理节点。创建完成后,Komodo 会检测到 Swarm 并显示其节点。

3. 加入更多节点

要向 Swarm 中添加更多服务器,进入 UI 中该 Swarm 的节点列表并点击 Join(加入) 按钮。这将显示带有正确令牌和地址的 docker swarm join 命令 —— 复制它并在你想添加的服务器上运行。

worker(工作节点)manager(管理节点) 分别有不同的加入命令。

tip

节点加入后,请在 Komodo 中将其添加为一个服务器,并(对于管理节点)将其加入 Swarm 资源的 servers 列表以实现冗余。

节点

查看 Swarm 中的所有节点及其角色、可用性、状态和其他信息。

服务

可以直接管理 Swarm 服务,也可以通过配置部署(Deployment)资源时使用 swarm 而非 server 来创建。

  • 查看运行、期望和已完成的任务数量。
  • 检查服务配置以及附加的 configs / secrets。
  • 查看并搜索服务日志,支持 grep。

堆栈

使用 docker stack deploy 将基于 compose 的堆栈部署到 Swarm。堆栈(Stack) 资源可以通过在 Stack 配置中配置 swarm 而非 server 来以 Swarm 为目标。

  • 在 UI、主机或 git 仓库中定义 compose 文件(与普通堆栈相同)。
  • 查看构成堆栈的服务和任务。

配置与密钥(Configs and Secrets)

直接从 Komodo 管理 Docker Swarm 的 configs 和 secrets。

  • 创建 带有标签和可选模板驱动的 configs 与 secrets。
  • 轮换 configs 和 secrets —— 由于它们在 Docker 中是不可变的,Komodo 会自动处理轮换流程:
    1. 创建一个临时替换项。
    2. 将所有引用该项的服务更新为使用临时版本。
    3. 移除原项并以新数据重新创建。
    4. 将服务更新回原始名称。
  • 移除 configs 和 secrets。
note

Configs 和 secrets 的最大大小为 500KB。

健康监控

Komodo 会跟踪每个 Swarm 的整体健康状况:

StateMeaning
Healthy(健康)所有节点和任务都正常。
Unhealthy(不健康)部分节点或任务不符合期望状态。
Down(宕机)所有节点或任务都已宕机。
Unknown(未知)无法确定状态。

当启用 send_unhealthy_alerts 时,Komodo 会通过你配置的 Alerters 路由告警。

部署到 Swarm

部署(Deployments)堆栈(Stacks) 都可以以 Swarm 而非单个服务器为目标:

  • Deployment 上,设置 swarm 以将容器部署为 Swarm 服务。你可以将 Swarm configs 和 secrets 附加到该服务。
  • Stack 上,设置 swarm 以通过 docker stack deploy 而非 docker compose up 部署。