CoreOS单元文件实际上是系统单元文件。 当你提交一个单位文件到车队,它被存储在一些registry中。 当你启动单元文件时,车队将这个单元文件传送到机器上的一个/run/fleet/units目录中,这个单元被调度运行。 单元停止时,单元文件将从机器中移除。
问题是:机队在哪里存储提交的单元文件? 我认为那里只有etcd作为分布式数据存储。 但etcd ls检查不会显示存储单元文件中的任何内容。
哦..看来他们被存储在隐藏的钥匙在etcd这样的:
core-02 ~ # etcdctl get /_coreos.com/fleet/states/hello-fleet.service/7fd494f60e2844978072683ea374a7dd {"loadState":"loaded","activeState":"active","subState":"running","machineState":{"ID":"7fd494f60e2844978072683ea374a7dd","PublicIP":"","Metadata":null,"Version":""},"unitHash":"e738189b45f4421e25cc0990da1c1e37ba0d40c6"} core-02 ~ # etcdctl get /_coreos.com/fleet/job/hello-fleet.service/object {"Name":"hello-fleet.service","UnitHash":[231,56,24,155,69,244,66,30,37,204,9,144,218,28,30,55,186,13,64,198]} core-02 ~ # etcdctl get /_coreos.com/fleet/state/hello-fleet.service {"loadState":"loaded","activeState":"active","subState":"running","machineState":{"ID":"7fd494f60e2844978072683ea374a7dd","PublicIP":"","Metadata":null,"Version":""},"unitHash":"e738189b45f4421e25cc0990da1c1e37ba0d40c6"} core-02 ~ # etcdctl get /_coreos.com/fleet/unit/e738189b45f4421e25cc0990da1c1e37ba0d40c6 {"Raw":"[Service]\nExecStart=/usr/bin/bash -c \"while true; do echo 'Hello Fleet'; sleep 1; done\"\n"} core-02 ~ #