Task:
We have an application running on Kubernetes cluster using nginx web server. The Nautilus application development team has pushed some of the latest features to prod branch and those need be deployed. The Nautilus DevOps team has created an image nginx:1.18 with latest changes.
Perform a rolling update for this application and incorporate nginx:1.18 image. The deployment name is nginx-deployment
Make sure all pods are up and running after the update.
Note: The kubectl utility on jump_host has been configured to work with the kubernetes cluster.
Step 1) Check if the deployment nginx-deployment is present
thor@jump_host ~$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-deployment 3/3 3 3 8m19s
Step 2) Check if the pods are running
thor@jump_host ~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-74fb588559-7447s 1/1 Running 0 8m37s
nginx-deployment-74fb588559-ch6mm 1/1 Running 0 8m37s
nginx-deployment-74fb588559-g9cm7 1/1 Running 0 8m37s
Step 3) Check what deployment version is running on the container
thor@jump_host ~$ kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 3/3 3 3 8m56s nginx-container nginx:1.16 app=nginx-app
Step 4) Update the image version to nginx:1.18 from nginx:1.16
thor@jump_host ~$ kubectl set image deployment/nginx-deployment nginx-container=nginx:1.18 --record=true
deployment.apps/nginx-deployment image updated
Step 5) Check the status of the pods and wait until they come back to running state
thor@jump_host ~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-74fb588559-7447s 1/1 Running 0 14m
nginx-deployment-74fb588559-ch6mm 0/1 Terminating 0 14m
nginx-deployment-74fb588559-g9cm7 1/1 Running 0 14m
nginx-deployment-7b6877b9b5-6qcw6 0/1 ContainerCreating 0 2s
nginx-deployment-7b6877b9b5-l8v6c 1/1 Running 0 9s
thor@jump_host ~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-deployment-7b6877b9b5-6qcw6 1/1 Running 0 46s
nginx-deployment-7b6877b9b5-776br 1/1 Running 0 44s
nginx-deployment-7b6877b9b5-l8v6c 1/1 Running 0 53s
thor@jump_host ~$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-deployment-7b6877b9b5-6qcw6 1/1 Running 0 109s 10.244.1.7 node01 <none> <none>
nginx-deployment-7b6877b9b5-776br 1/1 Running 0 107s 10.244.1.8 node01 <none> <none>
nginx-deployment-7b6877b9b5-l8v6c 1/1 Running 0 116s 10.244.1.6 node01 <none> <none>
Step 6) Check the rollout history
thor@jump_host ~$ kubectl rollout history deployment
deployment.apps/nginx-deployment
REVISION CHANGE-CAUSE
1 <none>
2 kubectl set image deployment/nginx-deployment nginx-container=nginx:1.18 --record=true
Step 7) Check the image version now
thor@jump_host ~$ kubectl get deployment -o wide
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 3/3 3 3 16m nginx-container nginx:1.18 app=nginx-app
No comments:
Post a Comment