Control panel of the entire cluster.
Expose API for control panel.
Key-Value store for all cluster data.
Watch newly created pods and assign node to run.
Each controller is logically separated into different process but they are actually combined into single process from single binary.
- Node controller: Detect node status
- Replication Controller: Maintain correct number of pods based on replication
- Endpoint Controller: Provide endpoint object: Services, Pods
- Account & Token Controller: create default account & access token for new namespace
Interact with underlying cloud providers.
Maintain running pods and provide Kubernetes runtime environment.
Run on each node in cluster.
Make sure containers are running in a pod. It takes a set of PodSpecs, then ensure the containers are aligned with it.
It doesnot bmanage containers which were not created by Kubernetes.
It is a network proxy that runs on each node.
Maintain network rules on nodes, allow network communication to your Pods IN/OUT of your cluster.
It uses either operating system packet filtering layer or forward the traffic itself.
Kubernetes support several containers:
The basic building block and deployable object in Kubernetes object model.
Pod encapsulates an application container, storage, unique network IP, configuration that define the way container runs.
Pod represents a unit of
Pod can be run in both single and multiple container.
An abstract way to expose application as network service. Application runs on top of a set of pods.
With it, application can use the native discovery mechanism, with their own IP and single DNS name, also with load balance across a set of pods.
Disk files in container are not persistant, which means files will lose once kubelet restarts container. Container also might want to share file with others.
Volume solves these requirements.
Term used for grouping multiple virtual cluster based on same physical cluster.
Maintain a set of replica pods running at any give time. Often used to guarantee the availability of identical pods.
Provides declarative configuration for
ReplicaSet, so that you don’t have to manually update the number. Simply set the desired state and
deployment do control over change for you.
Manage the deployment and scaling of pods. Guarantee the order and uniqueness of these pods, with declarative configuration.
This suites will for:
- stable unique network identifier
- stable persistent storage
- ordered graceful deployment and scaling
- ordered, automated rolling updates
Ensure nodes run a copy of a Pod, so as to guarantee pod exists in configured nodes.
It creates some pods, finishs their commands and guarantees they successfully terminate.
This is useful when you want to run some on-fly tasks.