Sunday, November 25, 2018

JTD-DesignerSeries-14-Kubernetes-101


A brief Prep-up
Though, DockerFile has standardized the application containerization format, complex features usually require multiple containers communicating together. Containers are light weight operating system virtualization, and an application can be packed in a docker image at build/release time. With containers deployed across different IAAS vendorslike AWS, Google, Microsoft & opensource Openstack, Kubernetes provides a portable, extensible open source platform for managing containerized workloads in a streamline way across the IAAS landscape. For eg: Deployment Kubernetes Object provides a JSON spec that allows you to create the infrastructure for your application / service on anywhere running with Kubernetes Cluster. Kubernetes is an extensible framework that allows vendors to build tools to support things like Dashboard, Visualizer, Operator.

An example of this "Kubernetes Operator for MongoDB" mentioned in my precious post
[https://integrationshift.blogspot.com/2018/11/jtd-designerseries-13.html]each other.


Concepts
Kubernetes Object - A persistent entity that defines the cluster workload & desired state of the cluster. For eg: Kubernetes Deployment Object represents an application running on the cluster with 3 replicas as the desired cluster state.

Pods: It is a basic building block, that represents a running process in the cluster. An idea of pod is to provide a layer of abstraction around container image to enable communication by managing network & storage layer. One Container per Pod is a most common Kubernetes usecase, but Pod can contain multiple co-located containers that are tightly coupled & need to share resources. As Pods are ephemeral disposable entities, Kubernetes uses controllers to manage the lifecycle of Pods.

Controller: It can create & manage multiple Pods for you, handling replication & rollouts to provide self-healing capabilities at cluster scope. Usually pod specification are included in objects like ReplicaSet, StatelfuSets, Deployments that helps Kubernetes controllers manage the runtime state of pods.

Kubernetes Architecture
At a really high level abstraction, Kubernetes documentation categorizes components as follows:
Master Components - Usually specifies the cluster control plane, and provides administration & management features. [kube-apiserver, etcd, kube-scheduler, kube-controller-manager, cloud-controller-manager].

Node Components - Runs on every node, maintaining running nodes and providing the kubernetes runtime environment. [kubelet, kube-proxy, container runtime]


Links
a) https://kubernetes.io/

No comments:

Post a Comment