Kubernetes Training Notes (Complete, Clean & Structured)
End-to-End Kubernetes Basics → Cluster Setup → Workloads → Services → Debugging → RC → Deployment → Scaling → Rollout
1. Introduction to Kubernetes
What is Kubernetes?
Kubernetes (K8s) is an open-source container orchestration platform used to automate:
- Deployment
- Scaling
- Management
- Healing (self-healing)
- Updating (rollouts/rollbacks)
It ensures containerized applications run reliably on distributed systems.
Why Kubernetes?
Kubernetes solves real-world production problems:
- Automated Scaling (Horizontal & Vertical)
- Self-Healing (restarts failed pods)
- Load Balancing
- Zero-downtime Deployments
- Automated Rollbacks
- Service Discovery & Networking
- Declarative configuration
- Multi-cloud / Hybrid support
Kubernetes abstracts the infrastructure and lets developers focus on application logic.
How Kubernetes Works
A Kubernetes cluster has:
- Control Plane (Master Node)
- Worker Nodes
You interact using kubectl → API Server → Kubelet → Pod.
Workflow
Workstation (kubectl) → API Server → Scheduler → Kubelet (Worker) → Pod
Architecture of Kubernetes
Control Plane Components
- API Server – central communication layer
- etcd – distributed key-value store
- Controller Manager – manages controllers (node, job, rc)
- Scheduler – decides placement of pods
- Cloud Controller Manager – optional cloud integrations
Worker Node Components
- kubelet – node agent
- kube-proxy – networking and iptables rules
- Container Runtime – Docker, containerd, CRI-O
2. Kubernetes Cluster Setup (Step-by-Step)
Refer:
- https://www.devopsschool.com/blog/complete-list-of-methods-to-deploy-kubernetes/
- https://www.devopsschool.com/blog/kubernetes-1-23-6-cluster-setup-master-and-worker-in-ubuntu-20-04/
Master Node Setup
kubeadm init
Worker Node Setup
Join using:
kubeadm join 172.31.14.2:6443 --token ms44wg.80pd5dalimgmb7xe \
--discovery-token-ca-cert-hash sha256:f1df7bb1cf8b8afcce7ffce4f9819ee7f3f9423228102b497cca877ab15c4c3e
Code language: CSS (css)
kubectl Architecture
Workstation (kubectl) → API Server → kubelet → Pod
3. Basic Kubernetes Workflow
Step 2 – Create Namespace
kubectl create ns dev
kubectl create ns qa
kubectl get ns
kubectl describe ns dev
kubectl delete ns dev
Code language: JavaScript (javascript)
Step 3 – Create Pod
Example pod YAML:
apiVersion: v1
kind: Pod
metadata:
name: rajesh
labels:
app: helloworld
spec:
containers:
- name: devopsschool1
image: scmgalaxy/nginx-devopsschoolv1
ports:
- name: nginx-port
containerPort: 80
Commands:
kubectl create -f pod.yaml
kubectl get pods
kubectl describe pod rajesh
kubectl logs rajesh
kubectl exec -it rajesh -- /bin/bash
kubectl delete -f pod.yaml
Code language: JavaScript (javascript)
Port-forward:
kubectl port-forward --address 0.0.0.0 pod/rajesh 8888:80
Step 4 – Create ReplicationController
RC = Ensures fixed number of Pod replicas
Example:
apiVersion: v1
kind: ReplicationController
metadata:
name: rajeshrc
spec:
replicas: 5
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: scmgalaxy/nginx-devopsschoolv1
Commands:
kubectl apply -f rc.yaml
kubectl get rc
kubectl get pods
kubectl edit rc rajeshrc
kubectl delete rc rajeshrc
Code language: JavaScript (javascript)
Step 5 – Create Deployment
Deployment = RC + Versioning + Rollout + Rollback
Quick creation:
kubectl create deployment my-dep --image=scmgalaxy/nginx-devopsschoolv1 --replicas=3
Scaling:
kubectl scale --replicas=5 deployment/my-dep
kubectl scale --replicas=15 deployment/my-dep
kubectl scale --replicas=2 deployment/my-dep
Rollout History:
kubectl rollout history deployment/my-dep
kubectl edit deployment/my-dep
kubectl rollout undo deployment/my-dep --to-revision=1
Step 6 – Create Service
Expose deployment:
kubectl expose deploy my-dep --port=80 --target-port=80
List service:
kubectl get svc
kubectl describe svc my-dep
curl http://<ClusterIP>
Code language: HTML, XML (xml)
Service types:
- ClusterIP
- NodePort
- LoadBalancer
4. Kubernetes API Resources and CRUD
Kubernetes CRUD:
| Action | Command | YAML |
|---|---|---|
| Create | kubectl create | kubectl create -f file.yaml |
| Read | kubectl get, kubectl describe | kubectl get -f file.yaml |
| Update | kubectl edit | kubectl apply -f file.yaml |
| Delete | kubectl delete | kubectl delete -f file.yaml |
View all API resources:
kubectl api-resources
5. Kubernetes Troubleshooting & Debugging
Important Commands
| Purpose | Command |
|---|---|
| Describe details | kubectl describe |
| Logs | kubectl logs <pod> |
| Shell into Pod | kubectl exec -it <pod> -- bash |
| Attach | kubectl attach <pod> |
| Port Forward | kubectl port-forward pod/podname 8888:80 |
| Copy files | kubectl cp file.yaml pod:/tmp |
| Authorization test | kubectl auth can-i create pod |
| Events | kubectl events |
6. Detailed Command History (Captured from your session)
All relevant commands have been consolidated, cleaned, and categorized:
Cluster & config
kubectl cluster-info
kubectl get nodes
kubectl config view
kubectl version
Code language: JavaScript (javascript)
Pods
kubectl get pods
kubectl get pods -o wide
kubectl describe pod rajesh
kubectl logs rajesh
kubectl exec -it rajesh -- bash
kubectl delete pod <pod>
Code language: JavaScript (javascript)
Namespace
kubectl create ns dev
kubectl delete ns dev
kubectl describe ns dev
Code language: JavaScript (javascript)
Replication Controller
kubectl apply -f rc.yaml
kubectl get rc
kubectl edit rc rajeshrc
kubectl delete rc rajeshrc
Code language: JavaScript (javascript)
Deployment
kubectl create deployment my-dep --image=scmgalaxy/nginx-devopsschoolv1 --replicas=3
kubectl scale --replicas=20 deployment/my-dep
kubectl rollout history deploy/my-dep
kubectl rollout undo deploy/my-dep --to-revision=1
Service
kubectl expose deploy my-dep --port=80 --target-port=80
kubectl get svc
curl http://<ClusterIP>
Code language: HTML, XML (xml)
7. Kubernetes Concepts Summary
| Component | Description |
|———-
| Pod | Smallest deployable unit |
| RC | Maintains fixed # of pods |
| Deployment | Adds versioning + rollouts |
| Service | Provides stable networking |
| Namespace | Logical separation |
| Node | Worker machine |
| Container Runtime | Docker/containerd |
| Kubelet | Node agent |
| API Server | Entry point for kubectl |
8. Security View
Platform → Runtime → App → DB → Network
(Secure every layer)
9. Everything in One Flow
Kubernetes workflow from zero to service exposure
- Setup cluster
- Create Namespace
- Create Pod
- Create ReplicationController
- Create Deployment
- Scale Deployment
- Check rollout history / revert
- Expose via Service
- Access via ClusterIP / NodePort / LB
- Debug using logs/describe/exec/events
Would you like these?