Kubernetes kaise kaam karta hai? 3 AM crash jo khud theek ho gaya
Kubernetes containers ko kai servers (nodes) par aapki likhi desired state mein chalata rehta hai. Deployment YAML batata hai kaunsi image, kitne replicas aur har pod ko kitna CPU/memory chahiye. kubectl apply object ko kube-apiserver tak bhejta hai aur cluster state etcd mein store hoti hai. kube-scheduler pod ko aisa node deta hai jahan requested resources fit hon; us node ka kubelet container runtime (containerd) se container chalata hai. Crash hone par kubelet same node par container restart karta hai (back-off ke saath); node unreachable hone par pods kuch minutes baad evict hote hain aur ReplicaSet controller doosre node par naye pods banata hai. Service badalte pods ke aage ek stable virtual IP/DNS deti hai. HorizontalPodAutoscaler CPU jaise metrics par replicas min se max ke beech badalta hai. Image badalne par Deployment naya ReplicaSet banata hai; default maxSurge 25% aur maxUnavailable 25%, isliye 3 replicas par pehle ek naya pod ready hota hai phir ek purana hatta hai. kubectl rollout undo pichhli revision par wapas le jaata hai; revisionHistoryLimit default 10 hai.
Links
Aaj ye karo
- kind install karo aur local cluster banao: kind create cluster.
- Part 1 ki image cluster mein load karo: kind load docker-image myapp:1.0.
- deployment.yaml apply karo (replicas: 3, image: myapp:1.0, resources.requests): kubectl apply -f deployment.yaml.
- Self-healing dekho: kubectl delete pod <pod-name>, phir kubectl get pods (naya pod khud banega).
- Service banao: kubectl expose deployment myapp --port=80 --target-port=3000.
- Autoscale: kubectl autoscale deployment myapp --cpu-percent=50 --min=3 --max=10 (metrics-server chahiye).
- Naya version: YAML mein image myapp:1.1 karke apply, kubectl rollout status deployment/myapp. Bug? kubectl rollout undo deployment/myapp.
kind create clusterkind load docker-image myapp:1.0kubectl apply -f deployment.yamlkubectl get pods -o widekubectl delete pod <pod-name>kubectl expose deployment myapp --port=80 --target-port=3000kubectl autoscale deployment myapp --cpu-percent=50 --min=3 --max=10kubectl rollout status deployment/myappkubectl rollout undo deployment/myappSources
kubernetes.io docs (pods, deployment, kube-scheduler, pod lifecycle, controllers, service, HPA) aur kind.sigs.k8s.io; 6 Nov 2026 ko check kiya.
howitworks