fleet-运行一个全局的单元

运行一个全局的单元

正如前面所提到的,全局单元是有用的,用于在您的集群中的所有机器上运行一个单元。它不会比一个普通的单元差太多,而是一个新的x-fleet参数称为Global=true。这是一个示例单元,用CoreOS中的数据狗来提交博客。你需要先设置一个etcd key ddapikey,本例将工作更多的细节在后。

[Unit]
Description=Monitoring Service

[Service]
TimeoutStartSec=0
ExecStartPre=-/usr/bin/docker kill dd-agent
ExecStartPre=-/usr/bin/docker rm dd-agent
ExecStartPre=/usr/bin/docker pull datadog/docker-dd-agent
ExecStart=/usr/bin/bash -c 
"/usr/bin/docker run --privileged --name dd-agent -h `hostname` 
-v /var/run/docker.sock:/var/run/docker.sock 
-v /proc/mounts:/host/proc/mounts:ro 
-v /sys/fs/cgroup/:/host/sys/fs/cgroup:ro 
-e API_KEY=`etcdctl get /ddapikey` 
datadog/docker-dd-agent"

[X-Fleet]
Global=true

如果我们启动这个单元,他将在我们拥有的3台机器上运行:

$ fleetctl start datadog.service
$ fleetctl list-units
UNIT                        MACHINE                 ACTIVE    SUB
myapp.service               c9de9451.../10.10.1.3   active    running
apache@1.service            491586a6.../10.10.1.2   active    running
apache@2.service            148a18ff.../10.10.1.1   active    running
apache-discovery@1.service  491586a6.../10.10.1.2   active    running
apache-discovery@2.service  148a18ff.../10.10.1.1   active    running
datadog.service             148a18ff.../10.10.1.1   active    running
datadog.service             491586a6.../10.10.1.2   active    running
datadog.service             c9de9451.../10.10.1.3   active    running

全局单元可以部署到子集与MachineMetadata参数匹配的机器,这是在下一节中解释。

原文地址:https://www.cnblogs.com/wanghongxu/p/5005037.html