TryCoreOS(3)

TurnToJPG -->


fleetctl Configuration

Cluster Status

fleetctl list-machines will display all of the nodes in cluster:

core@coreos1 ~ $ fleetctl list-machines
MACHINE		IP		METADATA
bea5741d...	172.17.8.203	-
dd464e69...	172.17.8.202	-
f22aee5d...	172.17.8.201	-

fleetctl list-units will list all of the services in cluster:

core@coreos1 ~ $ fleetctl list-units
UNIT	MACHINE	ACTIVE	SUB

Nodes Jumping

Use ssh-keygen for generating the id_rsa.pub, and add them into other nodes’s /home/core/.ssh/authorized_keys.

Start the ssh-agent via:

$ eval `ssh-agent`
$ ssh-add /home/core/.ssh/id_rsa
$ fleetctl ssh dd464e69

List the added ssh key via:

$ ssh-add  -l
2048 SHA256:w7OM8b6ximc9/lTgaB5gWpHK6xuf22IE37Of113yfJA /home/core/.ssh/id_rsa (RSA)

Then you could use fleetctl ssh dd464e69 for jumping to 172.17.8.202.

Or execute command like following:

 $ fleetctl ssh dd464e69 cat /etc/hostname
coreos2

Start First Fleet Unit

In core1 node, do following operation:

$ cp /etc/systemd/system/hello.service ./
$ vim hello.service 
$ fleetctl start ./hello.service 

Your hello.service should be like this:

[Unit] 
Description=Hello World 
After=docker.service 
Requires=docker.service 

[Service] 
TimeoutStartSec=0 
ExecStartPre=-/bin/docker kill busybox1 
ExecStartPre=-/bin/docker rm busybox1 
ExecStart=/bin/docker run --name busybox1 busybox /bin/sh -c "while true; do
echo Hello World; sleep 1; done" 
ExecStop="/bin/docker kill busybox1"

[X-Fleet]
X-Conflicts=hello*.service

Mainly the same as systemd’s configuration, but replace the last part to X-Fleet.

Start the unit via:

core@coreos1 ~ $ fleetctl start ./hello.service 
Unit hello.service inactive
Unit hello.service launched on bea5741d.../172.17.8.203
core@coreos1 ~ $ fleetctl list-units
UNIT		MACHINE				ACTIVE	SUB
hello.service	bea5741d.../172.17.8.203	active	running

In node3(172.17.8.203), you could use systemctl list-units for finding the service named hello.service.

Service Migration

Step1: Login to hello.service machine.
Step2: Reboot this node.
Step3: View current units has been migrated to new node.
Step4: List the avaiable machines.

core@coreos1 ~ $ fleetctl ssh hello.service
Last login: Wed Dec 21 10:24:15 UTC 2016 from 172.17.8.201 on pts/1
CoreOS stable (1185.5.0)
core@coreos3 ~ $ systemctl reboot
core@coreos3 ~ $ core@coreos1 ~ $ 
core@coreos1 ~ $ fleetctl list-units
UNIT		MACHINE				ACTIVE	SUB
hello.service	dd464e69.../172.17.8.202	active	running
core@coreos1 ~ $ fleetctl list-machines
MACHINE		IP		METADATA
dd464e69...	172.17.8.202	-
f22aee5d...	172.17.8.201	-

Destroy Service

If you want to destroy the service, do following:

core@coreos1 ~ $ fleetctl list-unit-files
UNIT		HASH	DSTATE		STATE		TARGET
hello.service	09bb151	launched	launched
dd464e69.../172.17.8.202
core@coreos1 ~ $ fleetctl destroy hello.service
Destroyed hello.service
core@coreos1 ~ $ fleetctl list-unit-files
UNIT	HASH	DSTATE	STATE	TARGET