This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
cloud:coreos [2017/01/23 11:26] frank created |
cloud:coreos [2017/02/21 10:03] (current) frank |
||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ==== Overwiew ==== | ||
+ | * CoreOS Linux was renamed to Container Linux in 2016. Under Apache 2.0 license. coreos is still the company name. The commercial distribution is called Tectonic which integrates kubernetes. | ||
+ | * Based on Gentoo Linux. use ebuild scripts from Gentoo Linux for compilation of its system components. use systemd for init. | ||
+ | * Major system components such as etcd, rkt, flannel, ignition are all open source and written in GO language on github. | ||
+ | * Installation/Deployment | ||
+ | * support ISO install, PXE, and deployment on cloud platforms - AWS, GCE, Azure, openstack, Vagrant(vbox, qemu/kvm), vmware. | ||
+ | * The cluster customization and first boot configuration(network configurations, user accounts, systemd units) is based on coreos-cloudinit(cloud-config like), coreos started new project named Ignition to replace it. Ignition is a provisioning utility, it can reads configuration from URL, network metadata service and hypervisor bridge and apply the configuration. | ||
+ | * Updates | ||
+ | * No package manager, automatic software updates | ||
+ | * upgrade/version: Alpha, Beta, Stable | ||
+ | * Update approach: Dual boot partitions. Updates are performed onto passive secondary partition, and becomes active upon a reboot or kexec. root partition and filesystem are automatically resized upon reboot, root partition is read-write, but /usr is mounted read-only. | ||
+ | * container management: initially used docker, in 12/2014, coreos started to include rkt providing support for appc. Now rkt can support both appc and OCI. | ||
+ | * Cluster | ||
+ | * etcd daemon runs across all cluster nodes. By using etcd, all configuration data are shared between cluster members. etcd is also key-value store. | ||
+ | * fleet(deprecated) to deploy cluster-wide services and containers with redundancy, failover features. | ||
+ | * Storage and network | ||
+ | * ext4 + overlayfs for container image storage | ||
+ | * flannel is virtual network that gives subnet to each host for container runtimes. | ||
+ | |||
+ | |||
+ | === Appc and OCI === | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
==== components ==== | ==== components ==== | ||
=== kernel === | === kernel === | ||
automatic kernel updates | automatic kernel updates | ||
+ | |||
+ | === file system === | ||
+ | ext4 + overlayfs | ||
+ | |||
=== systemd === | === systemd === | ||
=== etcd2 === | === etcd2 === | ||
+ | |||
etcd is key-value store for the most critical data of distributed systems. | etcd is key-value store for the most critical data of distributed systems. | ||
etcd is a distributed key-value store that provides a relieble way to store data across a cluster of machines. | etcd is a distributed key-value store that provides a relieble way to store data across a cluster of machines. | ||
+ | |||
+ | etcd uses[[ https://raft.github.io/| Raft consensus Algorithm]]. Kubernetes uses etcd for data storage. | ||
+ | |||
- automatic kernel updates. contain linux uses etcd to store semaphore values to make sure only subset of cluster are rebooting at any given time. | - automatic kernel updates. contain linux uses etcd to store semaphore values to make sure only subset of cluster are rebooting at any given time. | ||
Line 14: | Line 49: | ||
In container linux, it is systemd service daemon. | In container linux, it is systemd service daemon. | ||
+ | |||
+ | === etcd operator === | ||
+ | |||
+ | - single command line | ||
+ | - configure and manager the complexities of etcd using simple declarative configuration that will create, configure and manage etcd clusters. | ||
+ | - | ||
+ | |||
+ | === locksmith === | ||
+ | - reboot manager | ||
+ | - auto reboot based on update policy after auto updates. ensure a certain part of the cluster reboots once updates are applied. | ||
+ | - runs as daemon on all cluster nodes. | ||
+ | |||
+ | /etc/coreos/update.conf | ||
+ | GROUP=beta | ||
+ | change to alpha, then restart update-engine | ||
+ | systemctl restart update-engine | ||
+ | |||
=== <del>fleet</del> === | === <del>fleet</del> === | ||
Line 24: | Line 76: | ||
- not a background daemon | - not a background daemon | ||
- | - | + | - support both appc(App Container) and OCI(Open Container Initiative) which are container image format and runtime specification. |
=== dockerd and containerd === | === dockerd and containerd === | ||
+ | not owned by coreos. | ||
+ | |||
+ | Since 1.11, docker is split into containerd, docker daemon, runC. | ||
+ | |||
+ | containerd: daemon, manage docker runtime by runC. provide gRPC interface for dockerd, uses runC tor run container(via containerd-shim) | ||
+ | |||
+ | dockerd: daemon, | ||
+ | |||
+ | runC: implementation for OCI. | ||
+ | |||
+ | |||
+ | === flannel === | ||
+ | virtual network that gives a subnet to each host for use with container runtimes. | ||
- | === Kubernetes === | + | === ignition === |
- | -- container management software | + | provisioning utility designed specifically fore container linux. |
+ | - most basic level, it is a tool for manipulating disks during early boot. | ||
+ | - only runs onece | ||
+ | === Clair === | ||
+ | project for the static analysis of valnerabilities in appc and docker containers. | ||