2017-03-14 21:09:54 +00:00
---
2018-02-27 18:51:46 +00:00
reviewers:
2017-03-14 21:09:54 +00:00
- lavalamp
title: Kubernetes Components
2018-05-05 16:00:51 +00:00
content_template: templates/concept
2018-06-06 23:51:26 +00:00
weight: 20
2017-03-14 21:09:54 +00:00
---
2017-07-28 15:23:11 +00:00
2018-05-05 16:00:51 +00:00
{{% capture overview %}}
2017-05-14 22:49:45 +00:00
This document outlines the various binary components needed to
2017-03-14 21:09:54 +00:00
deliver a functioning Kubernetes cluster.
2018-05-05 16:00:51 +00:00
{{% /capture %}}
2017-03-14 21:09:54 +00:00
2018-05-05 16:00:51 +00:00
{{% capture body %}}
2017-03-14 21:09:54 +00:00
## Master Components
2017-05-14 22:49:45 +00:00
Master components provide the cluster's control plane. Master components make global decisions about the
2017-07-28 15:23:11 +00:00
cluster (for example, scheduling), and detecting and responding to cluster events (starting up a new pod when a replication controller's 'replicas' field is unsatisfied).
2017-03-14 21:09:54 +00:00
2018-02-12 22:42:49 +00:00
Master components can be run on any machine in the cluster. However,
2017-05-14 22:49:45 +00:00
for simplicity, set up scripts typically start all master components on
2018-02-12 22:42:49 +00:00
the same machine, and do not run user containers on this machine. See
2017-09-23 10:41:18 +00:00
[Building High-Availability Clusters ](/docs/admin/high-availability/ ) for an example multi-master-VM setup.
2017-08-04 13:35:15 +00:00
2017-03-14 21:09:54 +00:00
### kube-apiserver
2018-05-05 16:00:51 +00:00
{{< glossary_definition term_id = "kube-apiserver" length = "all" > }}
2017-03-14 21:09:54 +00:00
### etcd
2018-05-05 16:00:51 +00:00
{{< glossary_definition term_id = "etcd" length = "all" > }}
2018-01-25 22:34:06 +00:00
### kube-scheduler
2018-05-05 16:00:51 +00:00
{{< glossary_definition term_id = "kube-scheduler" length = "all" > }}
2017-03-14 21:09:54 +00:00
### kube-controller-manager
2018-05-05 16:00:51 +00:00
{{< glossary_definition term_id = "kube-controller-manager" length = "all" > }}
2017-03-14 21:09:54 +00:00
These controllers include:
2017-05-14 22:49:45 +00:00
* Node Controller: Responsible for noticing and responding when nodes go down.
* Replication Controller: Responsible for maintaining the correct number of pods for every replication
2017-03-14 21:09:54 +00:00
controller object in the system.
2017-05-14 22:49:45 +00:00
* Endpoints Controller: Populates the Endpoints object (that is, joins Services & Pods).
* Service Account & Token Controllers: Create default accounts and API access tokens for new namespaces.
2017-07-28 15:23:11 +00:00
2017-03-17 22:35:21 +00:00
### cloud-controller-manager
2018-02-12 22:42:49 +00:00
[cloud-controller-manager ](/docs/tasks/administer-cluster/running-cloud-controller/ ) runs controllers that interact with the underlying cloud providers. The cloud-controller-manager binary is an alpha feature introduced in Kubernetes release 1.6.
2017-03-21 18:49:23 +00:00
2017-07-28 15:23:11 +00:00
cloud-controller-manager runs cloud-provider-specific controller loops only. You must disable these controller loops in the kube-controller-manager. You can disable the controller loops by setting the `--cloud-provider` flag to `external` when starting the kube-controller-manager.
2017-03-21 18:49:23 +00:00
2017-05-14 22:49:45 +00:00
cloud-controller-manager allows cloud vendors code and the Kubernetes core to evolve independent of each other. In prior releases, the core Kubernetes code was dependent upon cloud-provider-specific code for functionality. In future releases, code specific to cloud vendors should be maintained by the cloud vendor themselves, and linked to cloud-controller-manager while running Kubernetes.
2017-03-21 18:49:23 +00:00
The following controllers have cloud provider dependencies:
2017-05-14 22:49:45 +00:00
* Node Controller: For checking the cloud provider to determine if a node has been deleted in the cloud after it stops responding
* Route Controller: For setting up routes in the underlying cloud infrastructure
* Service Controller: For creating, updating and deleting cloud provider load balancers
2017-07-28 15:23:11 +00:00
* Volume Controller: For creating, attaching, and mounting volumes, and interacting with the cloud provider to orchestrate volumes
2017-03-17 22:35:21 +00:00
2018-02-12 22:42:49 +00:00
## Node Components
Node components run on every node, maintaining running pods and providing the Kubernetes runtime environment.
### kubelet
2018-05-05 16:00:51 +00:00
{{< glossary_definition term_id = "kubelet" length = "all" > }}
2018-02-12 22:42:49 +00:00
### kube-proxy
[kube-proxy ](/docs/admin/kube-proxy/ ) enables the Kubernetes service abstraction by maintaining
network rules on the host and performing connection forwarding.
### Container Runtime
2018-03-23 16:56:03 +00:00
The container runtime is the software that is responsible for running containers. Kubernetes supports several runtimes: [Docker ](http://www.docker.com ), [rkt ](https://coreos.com/rkt/ ), [runc ](https://github.com/opencontainers/runc ) and any OCI [runtime-spec ](https://github.com/opencontainers/runtime-spec ) implementation.
2018-02-12 22:42:49 +00:00
## Addons
2017-03-14 21:09:54 +00:00
Addons are pods and services that implement cluster features. The pods may be managed
2017-05-14 22:49:45 +00:00
by Deployments, ReplicationControllers, and so on. Namespaced addon objects are created in
the `kube-system` namespace.
2017-03-14 21:09:54 +00:00
2018-02-12 22:42:49 +00:00
Selected addons are described below, for an extended list of available addons please see [Addons ](/docs/concepts/cluster-administration/addons/ ).
2017-03-14 21:09:54 +00:00
2018-02-12 22:42:49 +00:00
### DNS
2017-03-14 21:09:54 +00:00
2017-05-14 22:49:45 +00:00
While the other addons are not strictly required, all Kubernetes clusters should have [cluster DNS ](/docs/concepts/services-networking/dns-pod-service/ ), as many examples rely on it.
2017-03-14 21:09:54 +00:00
2017-05-14 22:49:45 +00:00
Cluster DNS is a DNS server, in addition to the other DNS server(s) in your environment, which serves DNS records for Kubernetes services.
2017-03-14 21:09:54 +00:00
2017-05-14 22:49:45 +00:00
Containers started by Kubernetes automatically include this DNS server in their DNS searches.
2017-03-14 21:09:54 +00:00
2018-02-12 22:42:49 +00:00
### Web UI (Dashboard)
2017-03-14 21:09:54 +00:00
2017-08-24 21:09:42 +00:00
[Dashboard ](/docs/tasks/access-application-cluster/web-ui-dashboard/ ) is a general purpose, web-based UI for Kubernetes clusters. It allows users to manage and troubleshoot applications running in the cluster, as well as the cluster itself.
2017-05-14 22:49:45 +00:00
2018-02-12 22:42:49 +00:00
### Container Resource Monitoring
2017-03-14 21:09:54 +00:00
2017-09-23 10:41:18 +00:00
[Container Resource Monitoring ](/docs/tasks/debug-application-cluster/resource-usage-monitoring/ ) records generic time-series metrics
2017-03-14 21:09:54 +00:00
about containers in a central database, and provides a UI for browsing that data.
2018-02-12 22:42:49 +00:00
### Cluster-level Logging
2017-03-14 21:09:54 +00:00
2017-09-23 10:41:18 +00:00
A [Cluster-level logging ](/docs/concepts/cluster-administration/logging/ ) mechanism is responsible for
2017-03-14 21:09:54 +00:00
saving container logs to a central log store with search/browsing interface.
2018-05-05 16:00:51 +00:00
{{% /capture %}}
2017-05-14 22:49:45 +00:00