252 lines
10 KiB
HTML
252 lines
10 KiB
HTML
<!Doctype html>
|
||
<html id="docs">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||
<link href='https://fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700,700italic,900,900italic' rel='stylesheet' type='text/css'>
|
||
<link rel="stylesheet" href="/css/styles.css"/>
|
||
<script src="/js/script.js"></script>
|
||
<script src="/js/jquery-2.2.0.min.js"></script>
|
||
<script src="/js/non-mini.js"></script>
|
||
<title>Kubernetes - Kubernetes Cluster Admin Guide: Cluster Components</title>
|
||
</head>
|
||
<body>
|
||
<div id="cellophane" onclick="kub.toggleMenu()"></div>
|
||
<header>
|
||
<a href="/" class="logo"></a>
|
||
<div class="nav-buttons" data-auto-burger="primary">
|
||
<a href="/docs" class="button" id="viewDocs">View Documentation</a>
|
||
<a href="/get-started" class="button" id="tryKubernetes">Try Kubernetes</a>
|
||
<button id="hamburger" onclick="kub.toggleMenu()" data-auto-burger-exclude><div></div></button>
|
||
</div>
|
||
|
||
<nav id="mainNav">
|
||
<main data-auto-burger="primary">
|
||
<div class="nav-box">
|
||
<h3><a href="">Get Started</a></h3>
|
||
<p>Built for a multi-cloud world, public, private or hybrid. Seamlessly roll out new features.</p>
|
||
</div>
|
||
<div class="nav-box">
|
||
<h3><a href="">Documentation</a></h3>
|
||
<p>Pellentesque in ipsum id orci porta dapibus. Nulla porttitor accumsan tincidunt. </p>
|
||
</div>
|
||
<div class="nav-box">
|
||
<h3><a href="">Community</a></h3>
|
||
<p>Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. </p>
|
||
</div>
|
||
<div class="nav-box">
|
||
<h3><a href="">Blog</a></h3>
|
||
<p>Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Quisque velit nisi, pretium ut lacinia in. </p>
|
||
</div>
|
||
</main>
|
||
<main data-auto-burger="primary">
|
||
<div class="left">
|
||
<h5 class="github-invite">Interested in hacking on the core Kubernetes code base?</h5>
|
||
<a href="" class="button">View On Github</a>
|
||
</div>
|
||
|
||
<div class="right">
|
||
<h5 class="github-invite">Explore the community</h5>
|
||
<div class="social">
|
||
<a href="https://twitter.com/kubernetesio" class="Twitter"><span>twitter</span></a>
|
||
<a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
|
||
<a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
|
||
<a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>stackoverflow</span></a>
|
||
<a href="https://groups.google.com/forum/#!forum/google-containers" class="mailing-list"><span>Mailing List</span></a>
|
||
</div>
|
||
</div>
|
||
<div class="clear" style="clear: both"></div>
|
||
</main>
|
||
</nav>
|
||
</header>
|
||
|
||
<!-- HERO -->
|
||
<section id="hero" class="light-text">
|
||
<h1></h1>
|
||
<h5></h5>
|
||
<div id="vendorStrip" class="light-text">
|
||
<ul>
|
||
<li><a href="/v1.1/">GUIDES</a></li>
|
||
<li><a href="/v1.1/reference">REFERENCE</a></li>
|
||
<li><a href="/v1.1/samples">SAMPLES</a></li>
|
||
<li><a href="/v1.1/support">SUPPORT</a></li>
|
||
</ul>
|
||
<div class="dropdown">
|
||
<div class="readout"></div>
|
||
<a href="/v1.1">Version 1.1</a>
|
||
<a href="/v1.0">Version 1.0</a>
|
||
</div>
|
||
<input type="text" id="search" placeholder="Search the docs">
|
||
</div>
|
||
</section>
|
||
|
||
<section id="encyclopedia">
|
||
<div id="docsToc">
|
||
<div class="pi-accordion">
|
||
|
||
|
||
|
||
</div> <!-- /pi-accordion -->
|
||
</div> <!-- /docsToc -->
|
||
<div id="docsContent">
|
||
<h1>Kubernetes Cluster Admin Guide: Cluster Components</h1>
|
||
<!-- BEGIN MUNGE: UNVERSIONED_WARNING -->
|
||
|
||
<!-- END MUNGE: UNVERSIONED_WARNING -->
|
||
|
||
<h1 id="kubernetes-cluster-admin-guide-cluster-components">Kubernetes Cluster Admin Guide: Cluster Components</h1>
|
||
|
||
<p>This document outlines the various binary components that need to run to
|
||
deliver a functioning Kubernetes cluster.</p>
|
||
|
||
<h2 id="master-components">Master Components</h2>
|
||
|
||
<p>Master components are those that provide the cluster’s control plane. For
|
||
example, master components are responsible for making global decisions about the
|
||
cluster (e.g., scheduling), and detecting and responding to cluster events
|
||
(e.g., starting up a new pod when a replication controller’s ‘replicas’ field is
|
||
unsatisfied).</p>
|
||
|
||
<p>Master components could in theory be run on any node in the cluster. However,
|
||
for simplicity, current set up scripts typically start all master components on
|
||
the same VM, and does not run user containers on this VM. See
|
||
<a href="high-availability.html">high-availability.md</a> for an example multi-master-VM setup.</p>
|
||
|
||
<p>Even in the future, when Kubernetes is fully self-hosting, it will probably be
|
||
wise to only allow master components to schedule on a subset of nodes, to limit
|
||
co-running with user-run pods, reducing the possible scope of a
|
||
node-compromising security exploit.</p>
|
||
|
||
<h3 id="kube-apiserver">kube-apiserver</h3>
|
||
|
||
<p><a href="kube-apiserver.html">kube-apiserver</a> exposes the Kubernetes API; it is the front-end for the
|
||
Kubernetes control plane. It is designed to scale horizontally (i.e., one scales
|
||
it by running more of them– <a href="high-availability.html">high-availability.md</a>).</p>
|
||
|
||
<h3 id="etcd">etcd</h3>
|
||
|
||
<p><a href="etcd.html">etcd</a> is used as Kubernetes’ backing store. All cluster data is stored here.
|
||
Proper administration of a Kubernetes cluster includes a backup plan for etcd’s
|
||
data.</p>
|
||
|
||
<h3 id="kube-controller-manager">kube-controller-manager</h3>
|
||
|
||
<p><a href="kube-controller-manager.html">kube-controller-manager</a> is a binary that runs controllers, which are the
|
||
background threads that handle routine tasks in the cluster. Logically, each
|
||
controller is a separate process, but to reduce the number of moving pieces in
|
||
the system, they are all compiled into a single binary and run in a single
|
||
process.</p>
|
||
|
||
<p>These controllers include:</p>
|
||
|
||
<ul>
|
||
<li>Node Controller</li>
|
||
<li>Responsible for noticing & responding when nodes go down.</li>
|
||
<li>Replication Controller</li>
|
||
<li>Responsible for maintaining the correct number of pods for every replication
|
||
controller object in the system.</li>
|
||
<li>Endpoints Controller</li>
|
||
<li>Populates the Endpoints object (i.e., join Services & Pods).</li>
|
||
<li>Service Account & Token Controllers</li>
|
||
<li>Create default accounts and API access tokens for new namespaces.</li>
|
||
<li>… and others.</li>
|
||
</ul>
|
||
|
||
<h3 id="kube-scheduler">kube-scheduler</h3>
|
||
|
||
<p><a href="kube-scheduler.html">kube-scheduler</a> watches newly created pods that have no node assigned, and
|
||
selects a node for them to run on.</p>
|
||
|
||
<h3 id="addons">addons</h3>
|
||
|
||
<p>Addons are pods and services that implement cluster features. They don’t run on
|
||
the master VM, but currently the default setup scripts that make the API calls
|
||
to create these pods and services does run on the master VM. See:
|
||
<a href="http://releases.k8s.io/release-1.1/cluster/saltbase/salt/kube-master-addons/kube-master-addons.sh">kube-master-addons</a></p>
|
||
|
||
<p>Addon objects are created in the “kube-system” namespace.</p>
|
||
|
||
<p>Example addons are:
|
||
* <a href="http://releases.k8s.io/release-1.1/cluster/addons/dns/">DNS</a> provides cluster local DNS.
|
||
* <a href="http://releases.k8s.io/release-1.1/cluster/addons/kube-ui/">kube-ui</a> provides a graphical UI for the
|
||
cluster.
|
||
* <a href="http://releases.k8s.io/release-1.1/cluster/addons/fluentd-elasticsearch/">fluentd-elasticsearch</a> provides
|
||
log storage. Also see the <a href="http://releases.k8s.io/release-1.1/cluster/addons/fluentd-gcp/">gcp version</a>.
|
||
* <a href="http://releases.k8s.io/release-1.1/cluster/addons/cluster-monitoring/">cluster-monitoring</a> provides
|
||
monitoring for the cluster.</p>
|
||
|
||
<h2 id="node-components">Node components</h2>
|
||
|
||
<p>Node components run on every node, maintaining running pods and providing them
|
||
the Kubernetes runtime environment.</p>
|
||
|
||
<h3 id="kubelet">kubelet</h3>
|
||
|
||
<p><a href="kubelet.html">kubelet</a> is the primary node agent. It:
|
||
* Watches for pods that have been assigned to its node (either by apiserver
|
||
or via local configuration file) and:
|
||
* Mounts the pod’s required volumes
|
||
* Downloads the pod’s secrets
|
||
* Run the pod’s containers via docker (or, experimentally, rkt).
|
||
* Periodically executes any requested container liveness probes.
|
||
* Reports the status of the pod back to the rest of the system, by creating a
|
||
“mirror pod” if necessary.
|
||
* Reports the status of the node back to the rest of the system.</p>
|
||
|
||
<h3 id="kube-proxy">kube-proxy</h3>
|
||
|
||
<p><a href="kube-proxy.html">kube-proxy</a> enables the Kubernetes service abstraction by maintaining
|
||
network rules on the host and performing connection forwarding.</p>
|
||
|
||
<h3 id="docker">docker</h3>
|
||
|
||
<p><code>docker</code> is of course used for actually running containers.</p>
|
||
|
||
<h3 id="rkt">rkt</h3>
|
||
|
||
<p><code>rkt</code> is supported experimentally as an alternative to docker.</p>
|
||
|
||
<h3 id="supervisord">supervisord</h3>
|
||
|
||
<p><code>supervisord</code> is a lightweight process babysitting system for keeping kubelet and docker
|
||
running.</p>
|
||
|
||
<!-- BEGIN MUNGE: IS_VERSIONED -->
|
||
<!-- TAG IS_VERSIONED -->
|
||
<!-- END MUNGE: IS_VERSIONED -->
|
||
|
||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||
<p><a href=""><img src="https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/docs/admin/cluster-components.md?pixel" alt="Analytics" /></a>
|
||
<!-- END MUNGE: GENERATED_ANALYTICS --></p>
|
||
|
||
|
||
</div>
|
||
</section>
|
||
|
||
|
||
<footer>
|
||
<main class="light-text">
|
||
<nav>
|
||
<a href="/getting-started.html">Getting Started</a>
|
||
<a href="/docs.html">Documentation</a>
|
||
<a href="http://blog.kubernetes.io/">Blog</a>
|
||
<a href="/foobang.html">Community</a>
|
||
</nav>
|
||
<div class="social">
|
||
<a href="https://twitter.com/kubernetesio" class="twitter"><span>twitter</span></a>
|
||
<a href="https://github.com/kubernetes/kubernetes" class="github"><span>Github</span></a>
|
||
<a href="http://slack.k8s.io/" class="slack"><span>Slack</span></a>
|
||
<a href="http://stackoverflow.com/questions/tagged/kubernetes" class="stack-overflow"><span>stackoverflow</span></a>
|
||
<a href="https://groups.google.com/forum/#!forum/google-containers" class="mailing-list"><span>Mailing List</span></a>
|
||
<label for="wishField">I wish this page <input type="text" id="wishField" name="wishField" placeholder="made better textfield suggestions"></label>
|
||
</div>
|
||
<div class="center">© 2016 Kubernetes</div>
|
||
</main>
|
||
</footer>
|
||
|
||
</body>
|
||
</html>
|
||
|
||
|
||
|