Container Linux

This is an old revision of this page, as edited by Dsimic (talk | contribs) at 08:05, 3 April 2014 (Cluster management: Language improvement; Linked two more articles). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

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][7]

CoreOS
OS familyUnix-like
Working stateIn development
Source modelOpen source
Latest release275.0.0[1] / 1 April 2014; 11 years ago (2014-04-01)
Marketing targetServers and clusters
Kernel typeMonolithic (Linux kernel)
LicenseApache License 2.0[2][3]
Official websitecoreos.com

CoreOS is a fork of Chrome OS, using it as a base while adding new functionality. As of February 2014, CoreOS is actively developed, primarily by Alex Polvi, Brandon Philips and Michael Marineau.[5][6]

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][7][8]

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][7][9][10][11]

Cluster management

CoreOS 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.[4][7][12][13][14]

CoreOS also provides fleet, a cluster manager daemon that controls CoreOS' separate systemd instances at the cluster level. By using fleet, CoreOS creates a distributed init system that ties together separate systemd instances and a cluster-wide etcd deployment. Using fleet allows single or multiple containers to be deployed cluster-wide, with more advanced options including redundancy, failover, tying containers to cluster members, dependencies between containers, and grouped deployment of containers. Command-line utility called fleetctl is used to configure and monitor this distributed init system by communicating with the etcd cluster. When used locally on a cluster member, fleetctl communicates with the local etcd instance over the loopback interface; when used from an external host, SSH tunneling is used with authentication provided through public SSH keys. Internally, fleet daemon communicates with systemd over D-Bus.[15][16][17][18]

Both etcd and fleet are written in Go language and distributed under the Apache License 2.0.[3][19]

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.[7][20][21][22]

See also

References

  1. ^ "Release v275.0.0: CoreOS v275.0.0". coreos/manifest. github.com. 2014-04-01. Retrieved 2014-04-03.
  2. ^ "CoreOS Pilot Agreement". coreos.com. 2014-03-13. Retrieved 2014-03-26.
  3. ^ a b "etcd/LICENSE at master". coreos/etcd. github.com. 2013-07-31. Retrieved 2014-03-26.
  4. ^ a b c d Libby Clark (2013-09-09). "Brandon Philips: How the CoreOS Linux Distro Uses Cgroups". linux.com. Retrieved 2014-02-13.
  5. ^ a b Cade Metz (2013-08-21). "Linux Hackers Rebuild Internet From Silicon Valley Garage". wired.com. Retrieved 2014-02-13.
  6. ^ a b "CoreOS – a new approach to Linux-based server systems". itnews2day.com. 2013-08-22. Retrieved 2014-03-26.
  7. ^ a b c d e "Using CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  8. ^ "Using docker with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  9. ^ "Updates & Patches - CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  10. ^ "Adding Disk Space to Your CoreOS Machine". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  11. ^ "Using systemd with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  12. ^ "Using etcd with CoreOS". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  13. ^ "Getting Started with etcd". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  14. ^ Brandon Philips (2014-01-15). "etcd @ GoSF". speakerdeck.com. Retrieved 2014-02-13.
  15. ^ "Launching containers with fleet". CoreOS documentation. coreos.com. Retrieved 2014-04-03.
  16. ^ "Using the Client". CoreOS documentation. coreos.com. Retrieved 2014-04-03.
  17. ^ "fleet/README.md at master". coreos/fleet. github.com. 2014-02-18. Retrieved 2014-04-03.
  18. ^ "fleet/Documentation/deployment.md at master". coreos/fleet. github.com. 2014-03-07. Retrieved 2014-04-03.
  19. ^ "fleet/LICENSE at master". coreos/fleet. github.com. 2014-02-06. Retrieved 2014-04-03.
  20. ^ "Installing CoreOS to Disk". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  21. ^ "Booting CoreOS via PXE". CoreOS documentation. coreos.com. Retrieved 2014-02-13.
  22. ^ "Booting CoreOS via iPXE". CoreOS documentation. coreos.com. Retrieved 2014-02-13.