CoreOS, Kubernetes, etcd
CoreOS
CoreOS Container Linux is the leading container operating system, designed to be managed and run at massive scale, with minimal operational overhead.
Kubernetes
Kubernetes is an open-source platform for automating deployment, scaling, and operations of application containers across clusters of hosts, providing container-centric infrastructure.
Kubernetes is
-
a Docker container management solution. There is also Mesos and its SaaS version Mesosphere as well as commercial products such as StackEngines Container Application Center.
-
not a container platform. Kubernetes does not have its own container implementation built in to it. Kubernetes manages the Docker container platform.
If you already have Docker containers that you'd like to launch and load balance, Kubernetes is the best way to run them. We could install, run and use Kubernetes on CoreOS
etcd
etcd is a distributed key value store that provides a reliable way to store data across a cluster of machines. It’s open-source and available on GitHub. etcd gracefully handles leader elections during network partitions and will tolerate machine failure, including the leader.
Etcd is an open-source distributed key-value store that serves as the backbone of distributed systems by providing a canonical hub for cluster coordination and state management – the systems source of truth. While etcd was built specifically for clusters running CoreOS, etcd works on a variety of operating systems including OS X, Linux, and BSD.
Kubernetes is built on top of etcd. Kubernetes leverages the etcd distributed key-value store. It takes care of storing and replicating data used by Kubernetes across the entire cluster, and thanks to the Raft consensus algorithm, etcd can recover from hardware failure and network partitions.
Virtual Machine
-
Software emulation of an abstrac machine
-
Make it look like hardware has features you want
-
Programs from one hardware & OS on another
-
Programming Simplicity
-
Each process thinks it has all memory/CPU time
-
Each process thinks it owns all devices
-
Different devices appear to have same interface
-
Device interfaces more powerful than raw hardware
-
Fault Isolation
-
Processes unable to directly impact other processes
-
Bugs cannot crash whole machine
-
Protection and Portability
-
Java interface safe and stable across many platforms
-
Virtual Machine vs Docker Containers
-
Virtual machines (VMs) are an abstraction of physical hardware turning one server into many servers. The hypervisor allows multiple VMs to run on a single machine. Each VM includes a full copy of an operating system, one or more apps, necessary binaries and libraries - taking up tens of GBs. VMs can also be slow to boot.
-
Containers are an abstraction at the app layer that packages code and dependencies together. Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes in user space. Containers take up less space than VMs (container images are typically tens of MBs in size), and start almost instantly.
The one program running at all times on the computer is the Kernel. Everything else is either a system program (ships with the operating system) or an application program.
Operating System helps you access hardwares. Operating Systems provide a virtual machine abstraction to handle diverse hardware.
Cluster and Node
A computer cluster consists of a set of loosely or tightly connected computers that work together so that, in many respects, they can be viewed as a single system. Unlike grid computers, computer clusters have each node set to perform the same task, controlled and scheduled by software.
The components of a cluster are usually connected to each other through fast local area networks, with each node (computer used as a server) running its own instance of an operating system. In most circumstances, all of the nodes use the same hardware]and the same operating system, although in some setups, different operating systems can be used on each computer, and/or different hardware.