Kubernetes and Docker

This post is where I plan to document my learning and experiences deploying both Kubernetes and Docker for managing Jupyter notebooks in an educational setting.

Kubernettes: is defined as “a container orchestration and management tool for automating the deployment and monitoring of containerized applications. In my case Docker containers.

The main (there are others) parts of Kubernetes are :
Master node
— manages worker nodes in a cluster (known as pods) and deployment of clusters (pods)
— coordinates all activities in your cluster, such as scheduling applications, maintaining applications’ desired state, scaling applications, and rolling out new updates.

Worker node:
— servers which run the application containers (in Pods) and other Kubernetes components such as proxies
— has a Kubelet, which is an agent for managing the node and communicating with the Kubernetes master. The
node should also have tools for handling container operations, such as Docker or rkt.

Service: functions as a proxy to replicated pods. Service requests can be load balanced across pods.

Pod:
— is the basic object of deployment. Each pod has its own IP address and can contain one or more container.
— contain the definition of how the containers should be configured and run. Kubernetes uses these
definitions to maintain the necessary resources. For example, you can define you need two pods.
During execution, if a pod goes down, Kubernetes will automatically fire up a new pod.

Link to article about Kubernetes Architecture below
An Introduction to Kubernetes

Kubernetes Networking:

— Every pod has its own IP address.
— Takes care of routing all internal requests between hosts and pods.
— External access is provided through a service, load balancer, etc.

Note: A Kubernetes cluster that handles production traffic should have a minimum of three nodes.

In order to deploy applications on Kubernetes, you tell the master to start the application containers. The master schedules the containers to run on the cluster’s nodes. The nodes communicate with the master using the Kubernetes API, which the master exposes. End users can also use the Kubernetes API directly to interact with the cluster