蜂群

管理 Docker Engine's swarm mode

要使用任何群方法,首先需要使引擎成为群的一部分。这可以通过使用以下命令初始化新群来实现 init() ,或加入现有的蜂群 join()

这些方法可在 client.swarm

class Swarm
get_unlock_key()

获取此群管理器的解锁密钥。

返回:

A dict 包含一个 UnlockKey 成员

init()

在此引擎上初始化新的群。

参数:
  • advertise_addr (str) -- 通告给其他节点的外部可达地址。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用侦听地址中的端口号。如果未指定,则在可能的情况下将自动检测。

  • listen_addr (str) -- 用于管理器间通信的侦听地址,以及确定用于VXLAN隧道端点(VTEP)的网络接口。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用默认的群组侦听端口。默认: 0.0.0.0:2377

  • force_new_cluster (bool) -- 强制创建新的蜂群,即使已经是其中的一部分。默认:FALSE

  • default_addr_pool (list of str) -- 默认地址池指定全局作用域网络的默认子网池。每个池都应指定为CIDR块,如‘10.0.0.0/8’。默认:无

  • subnet_size (int) -- SubnetSize指定从默认子网池创建的网络的子网大小。默认:无

  • data_path_addr (string) -- 用于数据路径流量的地址或接口。例如,192.168.1.1或接口,如eth0。

  • data_path_port (int) -- 用于数据路径流量的端口号。可接受的端口范围为1024%到49151。如果设置为 None 或0,则将使用默认端口4789。默认:无

  • task_history_retention_limit (int) -- 存储的任务历史记录的最大数量。

  • snapshot_interval (int) -- 快照之间的日志条目数。

  • keep_old_snapshots (int) -- 要保留的超过当前快照的快照数。

  • log_entries_for_slow_followers (int) -- 创建快照后为同步慢关注者而保留的日志条目数。

  • heartbeat_tick (int) -- 每次心跳之间的滴答量(秒)。

  • election_tick (int) -- 在没有领导人的情况下触发新选举所需的滴答量(秒)。

  • dispatcher_heartbeat_period (int) -- 代理向调度程序发送心跳的延迟。

  • node_cert_expiry (int) -- 节点证书自动过期。

  • external_ca (dict) -- 用于将签名请求转发到外部证书颁发机构的配置。使用 docker.types.SwarmExternalCA

  • name (string) -- 斯沃姆的名字

  • labels (dict) -- 用户定义的键/值元数据。

  • signing_ca_cert (str) -- 所有群节点TLS叶证书的所需签名CA证书,采用PEM格式。

  • signing_ca_key (str) -- 所有群节点TLS叶证书的所需签名CA密钥,采用PEM格式。

  • ca_force_rotate (int) -- 一个整数,如果尚未指定任何签名CA证书和密钥,则其用途是强制Sarm生成新的签名CA证书和密钥。

  • autolock_managers (boolean) -- 如果设置了密钥,则生成密钥并使用它锁定存储在管理器上的数据。

  • log_driver (DriverConfig) -- 用于在业务流程管理器中创建的任务的默认日志驱动程序。

返回:

创建的节点的ID。

返回类型:

(str)

抛出:

docker.errors.APIError -- 如果服务器返回错误。

示例

>>> client.swarm.init(
    advertise_addr='eth0', listen_addr='0.0.0.0:5000',
    force_new_cluster=False, default_addr_pool=['10.20.0.0/16],
    subnet_size=24, snapshot_interval=5000,
    log_entries_for_slow_followers=1200
)
join()

使此引擎加入已创建的群。

参数:
  • remote_addrs (list) -- 已加入群组的一个或多个管理器节点的地址。

  • join_token (string) -- 加入此群的秘密令牌。

  • listen_addr (string) -- 如果节点被提升为管理器,则用于管理器间通信的侦听地址,以及确定用于VXLAN隧道端点(VTEP)的网络接口。默认: '0.0.0.0:2377

  • advertise_addr (string) -- 通告给其他节点的外部可达地址。这可以是以下形式的地址/端口组合 192.168.1.1:4567 ,或后跟端口号的接口,如 eth0:4567 。如果省略端口号,则使用侦听地址中的端口号。如果未指定AdvertiseAddr,则将在可能的情况下自动检测它。默认: None

  • data_path_addr (string) -- 用于数据路径流量的地址或接口。例如,192.168.1.1或接口,如eth0。

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

leave()

留下一群人。

参数:

force (bool) -- 即使此节点是管理器,也要离开群。默认: False

返回:

True 如果请求通过的话。

抛出:

docker.errors.APIError -- 如果服务器返回错误。

unlock()

解锁一个锁定的蜂群。

参数:

key (string) -- 由提供的解锁密钥 get_unlock_key()

抛出:
  • docker.errors.InvalidArgument -- 如果键参数的格式不兼容

  • docker.errors.APIError -- 如果服务器返回错误。

返回:

True 如果请求成功,则返回。

示例

>>> key = client.api.get_unlock_key()
>>> client.unlock_swarm(key)
update()

更新蜂群的配置。

它采用的论点与 init() ,除 advertise_addrlisten_addr ,以及 force_new_cluster 。此外,它还考虑了以下几个论点:

参数:
  • rotate_worker_token (bool) -- 轮换工作进程加入令牌。默认: False

  • rotate_manager_token (bool) -- 轮换经理加入令牌。默认: False

  • rotate_manager_unlock_key (bool) -- 旋转管理器解锁密钥。默认: False

抛出:

docker.errors.APIError -- 如果服务器返回错误。

reload()

检查服务器上的群组并将响应存储在 attrs

抛出:

docker.errors.APIError -- 如果服务器返回错误。

version

群的版本号。如果这与服务器不同,则 update() 函数将不起作用,您需要调用 reload() 然后再打一次电话。

attrs

服务器中此对象的原始表示形式。