Kubernetes
- Google has systems like omega and borg to manage containers.
- Google has built a system using Go lang which has DNA of omega and borg with a motive to docker in production.
- Now k8s motive is to take containers to production.
- K8s Interaction in plain english (desired state)
you => I want 10 nginx pods
api server recives this and stores in etcd
api server informs scheduler
scheduler will create 10 pods on some nodes
controller ensure 10 pods are running all the time, if one pod fails it creates another.
- K8s use cattle approach in
pet vs cattle

Components
- Nodes: These are physical or virtual machines
- Nodes are categorized into
- Master Node: They manage the cluster.
- Node (Worker):
- This is where applications run
Master Node components
- API Server: This is responsible for communication
- etcd: This is where the data is stored (memory of k8s cluster)
- scheduler: This is responsible for creating any new container (pod)
- controller: This is not one component but internally many components.
- cloud controller manager (optional): This exists on k8s hosted by cloud providers (AKS, GKE, EKS): This is aware of cloud specifics.
Node Components
- Kubelet: This is agent of k8s master. This recieves instructions and executes them
- Container Runtime: This is container engine.
- Kube-proxy: This is responsible for communication (part of networking)
- Refer Here and Refer Here
Interfaces
- k8s uses 3 major interfaces to support multiple options/vendors
- containers: CRI (Container Runtime Interface)
- networking: CNI (Container Network Interface)
- storage: CSI (Container Storage interface)
K8s Bringup Options
- Laptop/Desktop: For dev purposes
- kind
- k3c
- Physical/Virtual Machines:
- kube-adm
- kube-spray
- Managed k8s (k8s on cloud)
- Azure Kuberenetes Service (AKS)
- Elastic k8s service (EKS)
- Google Kubernetes Engine (GKE)
Installing k8s on virtual machines
- Kuberenetes playground:
- Refer Here
- killercoda
- Try in playground & repeat what i did
