Kubernetes

Recently, I had the opportunity to look into kubernetes and I must say the concept is promising.

I’ll try in the following to summarizes my view on kubernetes at the example of docker (since I don’t know another container technology)

Containers (docker)

A container is a set of applications packed together to run isolated from other containers. A container is created from an image. The image contains information on how to install and setup its applications on the specific operating system.

Kubernetes

Kubernetes is a further abstraction layer above containers. It allows to manage clusters of containers. It contains clusters and clusters are a set of nodes. Nodes are physical or virtual computers which host a pods.

Pod: A pod is a logical “application”, it consists of an container images, their configuration, resources, communication ports and resource policies… In short it contains all the information to run the application.

Service: A service is an interface for a pod (NodePort) or a set of pods (LoadBalancer). It can be public or cluster private, depending on the type.

NodePort: A node port is an external endpoint for an application.

LoadBalancer: A load balancer is an external endpoint for a cluster. It balances load over a set of instances of an application.

ReplicationController/ReplicaSet: Manages a number of pod instances. It keeps track of the actual number number of instances and the desired number to ensure the system is in the desired state.

Volume: A volume is a persistent storage to be attached to and used by application instances/pods.

Job: A job is a one time running and self terminating application instance.

DaemonSet: A daemon set is a background running pod which lives as long as the Node does and is thus used for machine-level tasks.

Deployment: A deployment represents the highest layer of abstraction. It describes the whole application with its pods, services, volumes, replication- and resource-policies. It provides means for starting, stopping and upgrading the application.

Secret: A secret is a safe place to put credentials of all kinds (rather than putting them directly in the pods definition).

Name: The name identifies an entity in kubernetes.

Label: With labels entities can categorized and grouped together.

Selector: A selector is a key-value pair to identify entities with matching labels. I.e. select multiple pods in a service.

Namespace: With namespaces a cluster can be shared across multiple parties without risk of name clashes.

gwario.