Container Linux: Difference between revisions

Content deleted Content added
top: Named a reference for later reuse
Overview: Expanded so the "fleet" cluster manager is also described; New section "Cluster management" split off; Relocated explicit anchors and added two more
Line 65:
CoreOS is a [[Fork (software development)|fork]] of [[Chrome OS]], using it as a base while adding new functionality. {{As of|2014|2}}, CoreOS is actively developed, primarily by Alex Polvi, Brandon Philips and Michael Marineau.<ref name="wired-201308" /><ref name="itnews2day" />
 
== {{Anchor|ETCD|ETCDCTL}}Overview ==
CoreOS provides no [[package manager]], requiring all applications to run inside their containers, using [[Docker (software)|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 machine]]s. This approach relies on the Linux kernel's [[cgroups]] functionality, which provides [[namespace isolation]] and abilities to limit, account and isolate [[Resource (computer science)|resource usage]] ([[CPU]], memory, disk [[I/O]], etc.) of [[process group]]s.<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = https://coreos.com/using-coreos/docker/
Line 90:
}}</ref>
 
=== {{Anchor|ETCD|ETCDCTL|FLEET|FLEETCTL}}Cluster management ===
CoreOS also provides '''<tt>etcd</tt>''', a [[Daemon (computing)|daemon]] which runs across all computers in a [[Computer cluster|cluster]], allowing configuration data to be easily shared by providing a dynamic configuration registry. Since the [[key–value data]] stored within <tt>etcd</tt> is automatically distributed and [[Replication (computing)|replicated]] (with automated [[master election]]), all changes are reflected across the entire cluster. Beside configuration management, <tt>etcd</tt> also provides [[service discovery]] by allowing deployed applications to announce themselves. Communication with <tt>etcd</tt> is performed through a simple [[API]], which internally uses [[JSON]] on top of [[HTTP]]; the API can be used directly (through <tt>[[cURL|curl]]</tt>, for example), or indirectly through '''<tt>etcdctl</tt>''' which is a [[command-line]] utility also supplied by CoreOS. <tt>etcd</tt> is written in [[Go language]] and distributed under the [[Apache License 2.0]].<ref name="linux.com-737364" /><ref name="coreos-using" /><ref>{{Cite web
| url = https://coreos.com/using-coreos/etcd/
| title = Using etcd with CoreOS | work = CoreOS documentation
Line 105 ⟶ 106:
| date = 2014-01-15 | accessdate = 2014-02-13
| author = Brandon Philips | publisher = speakerdeck.com
}}</ref>
 
CoreOS also provides '''<tt>fleet</tt>''', a cluster manager daemon that controls CoreOS' separate systemd instances at the cluster level. By using <tt>fleet</tt>, CoreOS creates a distributed [[init]] system that ties together separate systemd instances and a cluster-wide <tt>etcd</tt> deployment. Using <tt>fleet</tt> allows single or multiple containers to be deployed cluster-wide, with more advanced options including redundancy, failover, locking of containers to specific machines, dependencies between containers, and grouped deployment of containers. Command-line utility called '''<tt>fleetctl</tt>''' is used to configure and monitor this distributed init system by communicating with the <tt>etcd</tt> cluster. When used locally on a cluster member, <tt>fleetctl</tt> communicates with the local <tt>etcd</tt> instance over the [[loopback interface]]; when used from an external host, [[SSH tunnel]]ing is used with authentication provided through [[public SSH key]]s. Internally, <tt>fleet</tt> daemon communicates with systemd over [[D-Bus]].<ref>{{Cite web
| url = https://coreos.com/docs/launching-containers/launching/launching-containers-fleet/
| title = Launching containers with fleet | work = CoreOS documentation
| accessdate = 2014-04-03
| publisher = coreos.com
}}</ref><ref>{{Cite web
| url = https://coreos.com/docs/launching-containers/launching/fleet-using-the-client/
| title = Using the Client | work = CoreOS documentation
| accessdate = 2014-04-03
| publisher = coreos.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/README.md
| title = fleet/README.md at master | work = coreos/fleet
| date = 2014-02-18 | accessdate = 2014-04-03
| publisher = github.com
}}</ref><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/Documentation/deployment.md
| title = fleet/Documentation/deployment.md at master | work = coreos/fleet
| date = 2014-03-07 | accessdate = 2014-04-03
| publisher = github.com
}}</ref>
 
Both <tt>etcd</tt> and <tt>fleet</tt> are written in [[Go language]] and distributed under the [[Apache License 2.0]].<ref name="license-etcd" /><ref>{{Cite web
| url = https://github.com/coreos/fleet/blob/master/LICENSE
| title = fleet/LICENSE at master | work = coreos/fleet
| date = 2014-02-06 | accessdate = 2014-04-03
| publisher = github.com
}}</ref>