运行一个全局的单元
正如前面所提到的,全局单元是有用的,用于在您的集群中的所有机器上运行一个单元。它不会比一个普通的单元差太多,而是一个新的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
参数匹配的机器,这是在下一节中解释。