Kubernetes Deployment – Complete Practice Lab
Below is the clean and correct command sequence for practicing Kubernetes Deployment, Scaling, Rolling Update, Rollout History, and Rollback.
1. Create a Deployment YAML file
vim deployment.yaml
Use this YAML:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx-deployment
labels:
app: nginx
spec:
replicas: 3
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
Save and exit:
Esc
:wq
Enter
2. Create the Deployment
kubectl apply -f deployment.yaml
Check the Deployment:
kubectl get deployment
Watch the Deployment:
kubectl get deployment -w
Press:
Ctrl + C
to stop watching.
3. Check all resources
kubectl get all
Check Pods:
kubectl get pods
Check ReplicaSets:
kubectl get rs
4. Learn kubectl create deployment
Display help:
kubectl create deployment -h
Create another Deployment:
kubectl create deployment app1 --image=nginx
Check all Deployments:
kubectl get deployments
Check only app1:
kubectl get deployment app1
5. Scale the Deployment
Scale app1 to 3 replicas:
kubectl scale deployment app1 --replicas=3
Check:
kubectl get deployment app1
Watch the change:
kubectl get deployment app1 -w
Stop watching:
Ctrl + C
Check Pods:
kubectl get pods
6. Scale Down
Scale app1 from 3 replicas to 1:
kubectl scale deployment app1 --replicas=1
Watch:
kubectl get deployment app1 -w
Check:
kubectl get deployment app1
7. Check Rollout Status
kubectl rollout status deployment app1
Check rollout history:
kubectl rollout history deployment app1
Check Pods:
kubectl get pods
8. Delete app1
kubectl delete deployment app1
Verify:
kubectl get deployment
kubectl get pods
9. Delete the NGINX Deployment
If you want to start the Deployment lab again:
kubectl delete deployment nginx-deployment
Check:
kubectl get deployment
kubectl get pods
10. Create the Deployment again from YAML
Check the YAML:
cat deployment.yaml
Create it:
kubectl apply -f deployment.yaml
Check:
kubectl get deployment
Check Pods:
kubectl get pods
Check ReplicaSets:
kubectl get rs
11. Check Rollout Status
kubectl rollout status deployment nginx-deployment
Expected:
deployment "nginx-deployment" successfully rolled out
12. Check Rollout History
kubectl rollout history deployment nginx-deployment
You should initially have something similar to:
REVISION CHANGE-CAUSE
1 <none>
13. Perform a Rolling Update
Current image:
nginx:1.14.2
Change it to:
nginx:latest
Command:
kubectl set image deployment nginx-deployment nginx=nginx:latest
Check rollout:
kubectl rollout status deployment nginx-deployment
Check history:
kubectl rollout history deployment nginx-deployment
Check ReplicaSets:
kubectl get rs
Check Pods:
kubectl get pods
14. Verify the New Image
First find the Pod name:
kubectl get pods
Then:
kubectl describe pod <POD_NAME> | grep -i image -A5
Example:
kubectl describe pod nginx-deployment-xxxxx | grep -i image -A5
You should see:
Image: nginx:latest
15. Check Deployment Image Directly
You can also use:
kubectl get deployment nginx-deployment -o jsonpath='{.spec.template.spec.containers[0].image}'
Expected:
nginx:latest
16. Check Rollout History
kubectl rollout history deployment nginx-deployment
You should now have two revisions:
REVISION CHANGE-CAUSE
1 <none>
2 <none>
The exact output can vary depending on your Kubernetes version and how the Deployment was created.
17. View a Specific Revision
For example:
kubectl rollout history deployment nginx-deployment --revision=2
This shows information about Revision 2.
18. Rollback the Deployment
Suppose nginx:latest has a problem.
Rollback:
kubectl rollout undo deployment nginx-deployment
Check rollout:
kubectl rollout status deployment nginx-deployment
Check history:
kubectl rollout history deployment nginx-deployment
19. Verify the Rollback
Check ReplicaSets:
kubectl get rs
Check Pods:
kubectl get pods
Check the current image:
kubectl get deployment nginx-deployment -o jsonpath='{.spec.template.spec.containers[0].image}'
Expected:
nginx:1.14.2
You can also verify with:
kubectl describe pod <POD_NAME> | grep -i image -A5
20. Complete Correct Command List
Here is the clean command list without the incorrect commands from your original notes:
# Create YAML file
vim deployment.yaml
# Apply Deployment
kubectl apply -f deployment.yaml
# Check Deployment
kubectl get deployment
# Watch Deployment
kubectl get deployment -w
# Check all resources
kubectl get all
# Check Pods
kubectl get pods
# Check ReplicaSets
kubectl get rs
# Deployment help
kubectl create deployment -h
# Create a Deployment
kubectl create deployment app1 --image=nginx
# Check Deployments
kubectl get deployments
# Check specific Deployment
kubectl get deployment app1
# Scale to 3 replicas
kubectl scale deployment app1 --replicas=3
# Watch scaling
kubectl get deployment app1 -w
# Scale down to 1 replica
kubectl scale deployment app1 --replicas=1
# Check Deployment
kubectl get deployment app1
# Check rollout status
kubectl rollout status deployment app1
# Check rollout history
kubectl rollout history deployment app1
# Delete app1
kubectl delete deployment app1
# Delete nginx Deployment
kubectl delete deployment nginx-deployment
# Apply YAML again
kubectl apply -f deployment.yaml
# Check rollout status
kubectl rollout status deployment nginx-deployment
# Check rollout history
kubectl rollout history deployment nginx-deployment
# Update image
kubectl set image deployment nginx-deployment nginx=nginx:latest
# Check rollout status
kubectl rollout status deployment nginx-deployment
# Check rollout history
kubectl rollout history deployment nginx-deployment
# Check ReplicaSets
kubectl get rs
# Check Pods
kubectl get pods
# Check current image
kubectl get deployment nginx-deployment \
-o jsonpath='{.spec.template.spec.containers[0].image}'
# View specific revision
kubectl rollout history deployment nginx-deployment --revision=2
# Rollback
kubectl rollout undo deployment nginx-deployment
# Check rollback status
kubectl rollout status deployment nginx-deployment
# Check history after rollback
kubectl rollout history deployment nginx-deployment
# Check ReplicaSets
kubectl get rs
# Check Pods
kubectl get pods
# Verify image after rollback
kubectl get deployment nginx-deployment \
-o jsonpath='{.spec.template.spec.containers[0].image}'
Important CKA Commands ⭐
These are the commands I recommend remembering:
kubectl apply -f deployment.yaml
kubectl get deployment
kubectl get pods
kubectl get rs
kubectl scale deployment <name> --replicas=3
kubectl rollout status deployment <name>
kubectl rollout history deployment <name>
kubectl set image deployment <name> <container>=<image>
kubectl rollout undo deployment <name>
Deployment lifecycle
deployment.yaml
│
▼
Deployment
│
▼
ReplicaSet
│
▼
Pods
│
▼
Running
Rolling Update
nginx:1.14.2
│
│ kubectl set image
▼
nginx:latest
│
▼
New ReplicaSet
│
▼
New Pods
Rollback
nginx:latest
│
│ kubectl rollout undo
▼
Previous configuration
│
▼
nginx:1.14.2
Note: I intentionally removed kubectl scale deployment app1 -w, kubectl scale deploy app1 -w, kubectl rollout delete ..., and the deprecated --record usage from your original command list.

