mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-09-10 05:30:26 +00:00
replace contents of docs/design with stubs
This commit is contained in:
@@ -1,85 +1 @@
|
||||
# Kubernetes architecture
|
||||
|
||||
A running Kubernetes cluster contains node agents (`kubelet`) and master
|
||||
components (APIs, scheduler, etc), on top of a distributed storage solution.
|
||||
This diagram shows our desired eventual state, though we're still working on a
|
||||
few things, like making `kubelet` itself (all our components, really) run within
|
||||
containers, and making the scheduler 100% pluggable.
|
||||
|
||||

|
||||
|
||||
## The Kubernetes Node
|
||||
|
||||
When looking at the architecture of the system, we'll break it down to services
|
||||
that run on the worker node and services that compose the cluster-level control
|
||||
plane.
|
||||
|
||||
The Kubernetes node has the services necessary to run application containers and
|
||||
be managed from the master systems.
|
||||
|
||||
Each node runs Docker, of course. Docker takes care of the details of
|
||||
downloading images and running containers.
|
||||
|
||||
### `kubelet`
|
||||
|
||||
The `kubelet` manages [pods](../user-guide/pods.md) and their containers, their
|
||||
images, their volumes, etc.
|
||||
|
||||
### `kube-proxy`
|
||||
|
||||
Each node also runs a simple network proxy and load balancer (see the
|
||||
[services FAQ](https://github.com/kubernetes/kubernetes/wiki/Services-FAQ) for
|
||||
more details). This reflects `services` (see
|
||||
[the services doc](../user-guide/services.md) for more details) as defined in
|
||||
the Kubernetes API on each node and can do simple TCP and UDP stream forwarding
|
||||
(round robin) across a set of backends.
|
||||
|
||||
Service endpoints are currently found via [DNS](../admin/dns.md) or through
|
||||
environment variables (both
|
||||
[Docker-links-compatible](https://docs.docker.com/userguide/dockerlinks/) and
|
||||
Kubernetes `{FOO}_SERVICE_HOST` and `{FOO}_SERVICE_PORT` variables are
|
||||
supported). These variables resolve to ports managed by the service proxy.
|
||||
|
||||
## The Kubernetes Control Plane
|
||||
|
||||
The Kubernetes control plane is split into a set of components. Currently they
|
||||
all run on a single _master_ node, but that is expected to change soon in order
|
||||
to support high-availability clusters. These components work together to provide
|
||||
a unified view of the cluster.
|
||||
|
||||
### `etcd`
|
||||
|
||||
All persistent master state is stored in an instance of `etcd`. This provides a
|
||||
great way to store configuration data reliably. With `watch` support,
|
||||
coordinating components can be notified very quickly of changes.
|
||||
|
||||
### Kubernetes API Server
|
||||
|
||||
The apiserver serves up the [Kubernetes API](../api.md). It is intended to be a
|
||||
CRUD-y server, with most/all business logic implemented in separate components
|
||||
or in plug-ins. It mainly processes REST operations, validates them, and updates
|
||||
the corresponding objects in `etcd` (and eventually other stores).
|
||||
|
||||
### Scheduler
|
||||
|
||||
The scheduler binds unscheduled pods to nodes via the `/binding` API. The
|
||||
scheduler is pluggable, and we expect to support multiple cluster schedulers and
|
||||
even user-provided schedulers in the future.
|
||||
|
||||
### Kubernetes Controller Manager Server
|
||||
|
||||
All other cluster-level functions are currently performed by the Controller
|
||||
Manager. For instance, `Endpoints` objects are created and updated by the
|
||||
endpoints controller, and nodes are discovered, managed, and monitored by the
|
||||
node controller. These could eventually be split into separate components to
|
||||
make them independently pluggable.
|
||||
|
||||
The [`replicationcontroller`](../user-guide/replication-controller.md) is a
|
||||
mechanism that is layered on top of the simple [`pod`](../user-guide/pods.md)
|
||||
API. We eventually plan to port it to a generic plug-in mechanism, once one is
|
||||
implemented.
|
||||
|
||||
|
||||
<!-- BEGIN MUNGE: GENERATED_ANALYTICS -->
|
||||
[]()
|
||||
<!-- END MUNGE: GENERATED_ANALYTICS -->
|
||||
This file has moved to [https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture.md](https://github.com/kubernetes/community/blob/master/contributors/design-proposals/architecture.md)
|
||||
|
Reference in New Issue
Block a user