This is a work in progress and as usual, until it is finished, it will hang out here in the ongoing area.
So what is Kubernetes?
- An open source container orchestration system
- Runs docker (or rkt) containers
- Supports multiple clouds and bare metal deployments
- Manages applications, not machines
- Automatic placement of containers (like VMWare DRS)
So what are the concepts in Kubernetes?
- Containers run on clusters
- Pods are a group of containers that work together.
- Services are pods that work together
- Labels are names that are used to organise services
- Ensures that a specific number of copies of a given pod are running at any one time
- Creates or kills pods as required to obtain the desired state
- Make your app portable
- It looks the same everywhere, no matter where you run it
- Doesn’t need you to install all the app dependencies on your host
- A pod is a group of one or more containers
- Each pod gets an IP address
- An entire pod sits on a single node
The Atomic unit of scheduling for different types of virtualisation
- Hypervisor -> VM (Virtual Machine)
- Docker -> Container
- Kubernetes -> Pod
Using the Pets vs Cattle analogy
- VM are Pets, if they start to go wrong, you fix them
- Pod are cattle, if they go wrong, you kill them, they die and another takes its place
- Services allow pod to talk to each other and talk to the “outside world”
- Are “REST” objects in the k8s API
- Give a stable IP endpoint#
- ClusterIP -> Exposes an app inside the cluster and gives it a stable IP
- NodePort -> Exposes the app outside of the cluster by adding a cluster-wise port on top of ClusterIP
- LoadBalancer -> Integrated NodePort with cloud-based loadbalancers