Skip to content

Commit b0c7088

Browse files
authored
Merge pull request #10 from srbdev/kubernetes-updates
2 parents 28dfb28 + 0aaba2b commit b0c7088

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed

_episodes/32.servics.md

Lines changed: 150 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)