MOTOSHARE 🚗🏍️
Turning Idle Vehicles into Shared Rides & Earnings
From Idle to Income. From Parked to Purpose.
Earn by Sharing, Ride by Renting.
Where Owners Earn, Riders Move.
Owners Earn. Riders Move. Motoshare Connects.
With Motoshare, every parked vehicle finds a purpose.
Owners earn. Renters ride.
🚀 Everyone wins.
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?