@@ -11,3 +11,153 @@ keypoints:
1111- Docker Compose is a simple tool to deploy basic services using containers
1212- Frameworks like Kubernetes, Rancher and OpenShift can help with deploying and managing complex containerized services.
1313---
14+
15+ # Container Services and Kubernetes
16+
17+ ## First Steps
18+
19+ ``` bash
20+ kubectl get nodes
21+ kubectl get pods
22+ kubectl get pods -A
23+ ```
24+
25+ ## Create a Namespace
26+
27+ ``` bash
28+ kubectl create namespace NAME
29+ ```
30+
31+ ## Deploy the Application
32+
33+ Create ` demo-app.yaml `
34+
35+ ``` yaml
36+ apiVersion : apps/v1
37+ kind : Deployment
38+ metadata :
39+ name : backend-api
40+ spec :
41+ replicas : 2
42+ selector :
43+ matchLabels :
44+ app : backend-api
45+ template :
46+ metadata :
47+ labels :
48+ app : backend-api
49+ spec :
50+ containers :
51+ - name : api
52+ image : nginx:alpine
53+ ports :
54+ - containerPort : 80
55+ resources :
56+ requests :
57+ memory : " 64Mi"
58+ cpu : " 100m"
59+ limits :
60+ memory : " 128Mi"
61+ cpu : " 200m"
62+ ---
63+ apiVersion : v1
64+ kind : Service
65+ metadata :
66+ name : backend-service
67+ spec :
68+ selector :
69+ app : backend-api
70+ ports :
71+ - port : 80
72+ targetPort : 80
73+ type : ClusterIP
74+ ---
75+ apiVersion : networking.k8s.io/v1
76+ kind : Ingress
77+ metadata :
78+ name : app-ingress
79+ spec :
80+ rules :
81+ - host : demo.local
82+ http :
83+ paths :
84+ - path : /
85+ pathType : Prefix
86+ backend :
87+ service :
88+ name : backend-service
89+ port :
90+ number : 80
91+ ` ` `
92+
93+ ` ` ` bash
94+ kubectl apply -f demo-app.yaml -n NAME # OR --namespace=NAME
95+ kubectl get pods,svc,ingress -n NAME
96+ ```
97+
98+ ## Key Kubernetes Features
99+
100+ ### Self-Healing
101+
102+ ``` bash
103+ # Show running pods
104+ kubectl get pods -n NAME
105+
106+ # Kill a pod
107+ kubectl delete pod pod-name-xyz -n NAME
108+
109+ # Watch Kubernetes automatically recreate it
110+ kubectl get pods -w -n NAME
111+ ```
112+
113+ ### Scaling
114+
115+ ``` bash
116+ # Scale up during "traffic spike"
117+ kubectl scale deployment backend-api --replicas=5 -n NAME
118+ kubectl get pods -n NAME
119+
120+ # Scale down
121+ kubectl scale deployment backend-api --replicas=2 -n NAME
122+ ```
123+
124+ ### Rolling Updates
125+
126+ ``` bash
127+ # Update to new version with zero downtime
128+ kubectl set image deployment/backend-api api=nginx:1.21-alpine -n NAME
129+
130+ # Watch the rolling update
131+ kubectl rollout status deployment/backend-api -n NAME
132+ kubectl get pods -n NAME
133+
134+ # Rollback if needed
135+ kubectl rollout undo deployment/backend-api -n NAME
136+ ```
137+
138+ ### Resource Management
139+
140+ ``` bash
141+ # Show resource usage
142+ kubectl top nodes
143+ kubectl top pods -n NAME
144+ ```
145+
146+ ## Port Forwarding
147+
148+ ``` bash
149+ curl http://localhost:8000
150+
151+ # Forward local port to the service
152+ kubectl port-forward svc/backend-service 8000:80 -n NAME
153+
154+ # Access in browser or curl
155+ curl http://localhost:8000
156+ # or open http://localhost:8000 in browser
157+ ```
158+
159+ ## Clean up Namespaces
160+
161+ ``` bash
162+ kubectl delete namespaces NAME
163+ ```
0 commit comments