Notes on CoreOS
- build of ChromeOS
- very lightweight, no extra pieces
- not even a package manager
- all apps are expected as docker containers
- on boot:
- loads "clound-config"
- loads etcd (daemon)
- highly-available/globally distributed key-value store
- each node runs its own ectd client
- passes configuration between nodes
- used for service-discovery (e.g. a load balancer queries
etcdfor ip address of backend services) - to get the data:
http://127.0.0.1:4001/v2/keys/
or utility
etcdctl - loads "fleet" (daemon) to schedule, manage apps across cluster
- fleet is a system wide init
- fleet ties into nodes
systemd - constraining the deployment targets
- start or stop services on less busy nodes!
- specify conditions for starting service
fleetctl- schedule services
- manage nodes
- general state of systems
Docker
- containerization system utilizes LXC
- uses
kernelnamespacing and cgroups to isolate processes - act as individual servers running side by side over each other
- vs virtualization: doesn't emulate OS only implements whats necessary to run app
Kubernetes - pronounced koo-ber-nay'-tace
- manage containerized apps across a cluster of nodes
- unit of work is a service, can have member nodes, user shouldn't care where work is done.
- Controlling unit called "master" service
- directs communications across system
- uses etcd, but is more fleiible than CoreOS implementation
- runs API server
etcdstore and service details of containers are in agreementkubecfgand RESTful interface- manager service watches for changes on
etcdacts accordingly Kubernetes minions - where the work is done - communicate with master
- network containers
- docker service is required
- dedicated subnet for each minion is available so ports can be exposed correctly Kubelet -
- service communicates with master server to receive commands and work
- work is received as a manifest Pod
- closely related containers grouped on pd
- involved containers scheduled on hosts
- share volumes and ip space