Kubernetes

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

Replication controllers

  • 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

Containers

  • 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

Pods

  • 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

  • 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#

Service Types

  • 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

Deployments

  • tbc