CoreOS is an open source lightweight operating system based on the Linux kernel and designed for providing infrastructure to clustered deployments, while focusing on automation, ease of applications deployment, security, reliability and scalability. As an operating system, CoreOS provides only the minimal functionality required for deploying applications inside software containers, together with built-in mechanisms for service discovery and configuration sharing.[4][5][6]
CoreOS | |
---|---|
OS family | Unix-like |
Working state | In development |
Source model | Open source |
Latest release | 247.0.0[1] / 4 March 2014 |
Marketing target | Servers and clusters |
Kernel type | Monolithic (Linux kernel) |
License | Apache License 2.0[2][3] |
Official website | coreos |
CoreOS is a fork of Chrome OS, using it as a base while adding new functionality. As of February 2014[update], CoreOS is actively developed, primarily by Alex Polvi, Brandon Philips and Michael Marineau.[5]
Overview
CoreOS provides no package manager, requiring all applications to run inside their containers, using Docker and its underlying Linux Containers (LXC) operating system–level virtualization technology for running multiple isolated Linux systems (containers) on a single control host (CoreOS instance). That way, resource partitioning is performed through multiple isolated userspace instances, instead of using a hypervisor and providing full-fledged virtual machines. This approach relies on the Linux kernel's cgroups functionality, which provides namespace isolation and abilities to limit, account and isolate resource usage (CPU, memory, disk I/O, etc.) of process groups.[4][6][7]
For additional security and reliability of updates, CoreOS employs a dual-partition scheme for its read-only root filesystem, meaning that the operating system update is performed as a whole and installed onto a passive secondary root partition, which becomes active upon reboot or kexec. That way, easy rollbacks to known-to-be-stable version of the operating system are also ensured, and each boot partition can be signed for additional security. Writable parts of the filesystem are stored in a separate "state" partition, which is automatically resized to fill all available disk space upon reboots. CoreOS uses systemd as its primary init system, with tight integration between it and various CoreOS' internal parts.[4][6][8][9][10]
CoreOS also provides etcd, a daemon which runs across all computers in a cluster, allowing configuration data to be easily shared by providing a dynamic configuration registry. Since the key–value data stored within etcd is automatically distributed and replicated (with automated master election), all changes are reflected across the entire cluster. Beside configuration management, etcd also provides service discovery by allowing deployed applications to announce themselves. Communication with etcd is performed through a simple API, which internally uses JSON on top of HTTP; the API can be used directly through curl (for example), or indirectly through etcdctl which is a command-line utility also supplied by CoreOS. etcd is written in Go language and distributed under the Apache 2.0 License.[4][6][11][12][13]
Deployment
In addition to running on dedicated hardware, where it can be either permanently installed to disk or remotely booted via PXE or iPXE, CoreOS supports deployments on various hardware virtualization platforms, including Amazon EC2, QEMU/KVM, OpenStack, Vagrant and VMware.[6][14][15][16]
See also
References
- ^ "Release v247.0.0: CoreOS v247.0.0". coreos/manifest. github.com. 2014-03-04. Retrieved 2014-03-24.
- ^ "CoreOS Pilot Agreement". coreos.com. Retrieved 2014-03-26.
- ^ "etcd/LICENSE at master". coreos/etcd. github.com. 2013-07-31. Retrieved 2014-03-26.
- ^ a b c d Libby Clark (2013-09-09). "Brandon Philips: How the CoreOS Linux Distro Uses Cgroups". linux.com. Retrieved 2014-02-13.
- ^ a b Cade Metz (2013-08-21). "Linux Hackers Rebuild Internet From Silicon Valley Garage". wired.com. Retrieved 2014-02-13.
- ^ a b c d e "Using CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Using docker with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Updates & Patches - CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Adding Disk Space to Your CoreOS Machine". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Using systemd with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Using etcd with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Getting Started with etcd". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ Brandon Philips (2014-01-15). "etcd @ GoSF". speakerdeck.com. Retrieved 2014-02-13.
- ^ "Installing CoreOS to Disk". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Booting CoreOS via PXE". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
- ^ "Booting CoreOS via iPXE". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
External links