Kubernetes is an open source platform for managing containerized workloads and
services.
Cluster Architecture
Nodes: A node is basically a virtual or physical machine. Kubernetes uses nodes to
run pods, which have containers running together inside those pods to operate as a
single process.
A set of kubernetes components and a container runtime runs on each node. A node is
a worker machine, where the containers are launched by the kubernetes.
A cluster is a group of nodes grouped together and this way if one node fails, we
can still have the application accessible from the other nodes.
A master is a node with the kubernetes control plane components installed, which is
responsible for managing the cluster of worker nodes. It watches over the nodes in
the cluster and is responsible for the actual orchestration of containers on worker
nodes.
API Server - It acts as a frontend for kubernetes to manage through CLIs to
interact with kubernetes cluster.
etcd (server) - It is a distributed key-value store for kubernetes to store all
data which is used to manage the cluster.
kubelet (service) - It is an a agent that runs on each node in the cluster. It is
responsible for making sure that the containers are running and are healthy.
Container Runtime - It is responsible for running the images as containers.
Controller - It is responsible for noticing and responding when nodes, containers
or the endpoints are not responding.
Scheduler - It is responsible to initiate and distribute containers across multiple
nodes by assessing the resources of the nodes.
kubectl - It is a Kubernetes CLI that is used to deploy and manage applications on
a Kubernetes cluster, to get the cluster related information, to get the status of
the nodes in the cluster
kubectl run hello-minikube > To start an application on the cluster
kubectl cluster-info > To view the information about the cluster
kubectl get nodes > To list all the nodes which are part of the cluster
kubectl run my-web-app --image=my-web-app --replicas=100 > Runs 100 pods of my-web-
app image.
================
Container and Orchestration
kubectl create -f pod-definition.yml
kubectl get pods
kubectl describe pod <pod_name>
The "command" instruction in the PodSpec references to the ENTRYPOINT instruction
of the dockerfile
And the "args" instruction in the PodSpec references to the CMD instruction of the
dockerfile
Web experience and AWS