In this post we will be looking into few operation with pods/deployments as below.
Scale UP and Scale Down Pods/Containers
Our first project is deployed now on minikube cluster and accessible as well.
At this stage our project deployed now.Let we try to do scaling on containers as below.
Let we check current replicas as below. This we can check from minikube dashboard as below.
here currently 1 container is running , which is original container.
Let we create 3 replica for this container as below.
shreeganesh@aim2022:~$ kubectl scale deployment/minikube-first-dep --replicas=3
deployment.apps/minikube-first-dep scaled
shreeganesh@aim2022:~$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
minikube-first-dep 3/3 3 3 24d
shreeganesh@aim2022:~$
shreeganesh@aim2022:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
minikube-first-dep-84fddbc8ff-dqrlr 1/1 Running 0 2m50s
minikube-first-dep-84fddbc8ff-gwgv5 1/1 Running 0 2m50s
minikube-first-dep-84fddbc8ff-pxnnl 1/1 Running 1 (24d ago) 24d
shreeganesh@aim2022:~$
let we check the same from minikube again .
here we have 3 pods now , these pods will be running same codes and in manner of load balanced way to handle incoming requests.
let we scale down the same as below.
shreeganesh@aim2022:~$ kubectl scale deployment/minikube-first-dep --replicas=1
deployment.apps/minikube-first-dep scaled
shreeganesh@aim2022:~$
shreeganesh@aim2022:~$
shreeganesh@aim2022:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
minikube-first-dep-84fddbc8ff-dqrlr 1/1 Terminating 0 4m12s
minikube-first-dep-84fddbc8ff-gwgv5 1/1 Terminating 0 4m12s
minikube-first-dep-84fddbc8ff-pxnnl 1/1 Running 1 (24d ago) 24d
shreeganesh@aim2022:~$
shreeganesh@aim2022:~$ kubectl get pods
NAME READY STATUS RESTARTS AGE
minikube-first-dep-84fddbc8ff-pxnnl 1/1 Running 1 (24d ago) 24d
shreeganesh@aim2022:~$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
minikube-first-dep 1/1 1 1 24d
shreeganesh@aim2022:~$
Updating the Deployments
Here are the steps on how to update a deployment in Kubernetes:
- Build a new Docker image with the updated code.
- Push the new image to a container registry.
- Update the deployment manifest to specify the new image.
- Apply the updated deployment manifest to the Kubernetes cluster.
As of now we have made depoyment live and below are current status of project.
Project url page :
Deployment status :
NAME READY STATUS RESTARTS AGE
minikube-first-dep-84fddbc8ff-pxnnl 1/1 Running 2 (37m ago) 31d
shreeganesh@aim2022:~$
shreeganesh@aim2022:~$ kubectl get deployments
NAME READY UP-TO-DATE AVAILABLE AGE
minikube-first-dep 1/1 1 1 31d
shreeganesh@aim2022:~$
Here i am changing below code marked in RED in app.mjs file .
now we again need to build the image and push the same to DockerHub as below.
shreeganesh@aim2022:~/Desktop/Docker$ docker build -t abhishek2023/python_repo:4.0 . [+] Building 2.4s (11/11) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 151B 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => [internal] load metadata for docker.io/library/node:14 2.3s => [auth] library/node:pull token for registry-1.docker.io 0.0s => [1/5] FROM docker.io/library/node:14@sha256:a158d3b9b4e3fa813fa6c8c590b8f0a860e015ad4e59bbce5744d2f6fd8461aa 0.0s => [internal] load build context 0.0s => => transferring context: 1.15kB 0.0s => CACHED [2/5] WORKDIR /app 0.0s => CACHED [3/5] COPY package.json . 0.0s => CACHED [4/5] RUN npm install 0.0s => [5/5] COPY . . 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:d9005173c53c6ab54fbcdda84acc2416ae3d3ae3a076e1135b337317012b483b 0.0s => => naming to docker.io/abhishek2023/python_repo:4.0 0.0s shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~/Desktop/Docker$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE abhishek2023/python_repo 4.0 d9005173c53c 4 seconds ago 916MB abhishek2023/python_repo 2.0 f2aca7128c5c 4 weeks ago 916MB shreeganesh@aim2022:~/Desktop/Docker$ docker push abhishek2023/python_repo:4.0 The push refers to repository [docker.io/abhishek2023/python_repo] c170fcbdcf73: Pushed 7707a09dac3e: Layer already exists a090fd4033fc: Layer already exists 653e53542070: Layer already exists 0d5f5a015e5d: Layer already exists 3c777d951de2: Layer already exists f8a91dd5fc84: Layer already exists cb81227abde5: Layer already exists e01a454893a9: Layer already exists c45660adde37: Layer already exists fe0fb3ab4a0f: Layer already exists f1186e5061f2: Layer already exists b2dba7477754: Layer already exists 4.0: digest: sha256:0a07d0033a03ff448830c047562411b5666050b0800d313e4ed74867ee02e894 size: 3046 shreeganesh@aim2022:~/Desktop/Docker$ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE minikube-first-dep 1/1 1 1 32d shreeganesh@aim2022:~/Desktop/Docker$ kubectl get pods NAME READY STATUS RESTARTS AGE minikube-first-dep-84fddbc8ff-pxnnl 1/1 Running 2 (51m ago) 32d shreeganesh@aim2022:~/Desktop/Docker$ kubectl set image deployment/minikube-first-dep python-repo-kxv7q=abhishek2023/python_repo:4.0 deployment.apps/minikube-first-dep image updated shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~/Desktop/Docker$ kubectl get deployment NAME READY UP-TO-DATE AVAILABLE AGE minikube-first-dep 1/1 1 1 32d shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout status deployment/minikube-first-dep deployment "minikube-first-dep" successfully rolled out shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~/Desktop/Docker$ shreeganesh@aim2022:~$ minikube service minikube-first-dep --url http://192.168.59.100:30313
Hence our new deployment is done now as below.
Correcting Wrong Deployments and Going back in Deployment History
Suppose we rolled out some errorneous deployment which was not existing as below. And it will keep waiting for error images as this is not existing .We can check with below commands.
shreeganesh@aim2022:~/Desktop/Docker$ kubectl set image deployment/minikube-first-dep python-repo-kxv7q=abhishek2023/python_repo:NA
deployment.apps/minikube-first-dep image updated
shreeganesh@aim2022:~/Desktop/Docker$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
minikube-first-dep 1/1 1 1 32d
shreeganesh@aim2022:~/Desktop/Docker$ kubectl set image deployment/minikube-first-dep python-repo-kxv7q=abhishek2023/python_repo:NA
deployment.apps/minikube-first-dep image updated
shreeganesh@aim2022:~/Desktop/Docker$
shreeganesh@aim2022:~/Desktop/Docker$ kubectl get deployment
NAME READY UP-TO-DATE AVAILABLE AGE
minikube-first-dep 1/1 1 1 32d
shreeganesh@aim2022:~/Desktop/Docker$
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout status deployment/minikube-first-dep
Waiting for deployment "minikube-first-dep" rollout to finish: 1 old replicas are pending termination...
Let's check Dashboard : This is in UNHEALTHY status as below.
in this case we need to undo the rollout as below.
shreeganesh@aim2022:~/Desktop/Docker$
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout undo deployment/minikube-first-dep
deployment.apps/minikube-first-dep rolled back
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout status deployment/minikube-first-dep
deployment "minikube-first-dep" successfully rolled out
shreeganesh@aim2022:~/Desktop/Docker$
shreeganesh@aim2022:~/Desktop/Docker$ check now dashboard : It's running now
We also can go back to OLD deployment as below as well.
=> First let we check available revisions in for this project as below.
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout history deployment/minikube-first-dep
deployment.apps/minikube-first-dep
REVISION CHANGE-CAUSE
1 <none>
3 <none>
4 <none>=> Let we check revision history : This revision was orginal Code
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout history deployment/minikube-first-dep --revision=1
deployment.apps/minikube-first-dep with revision #1
Pod Template:
Labels: app=minikube-first-dep
pod-template-hash=84fddbc8ff
Containers:
python-repo-kxv7q:
Image: abhishek2023/python_repo:2.0
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
=> Let we check revision history : This revision was Faulty Image Code
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout history deployment/minikube-first-dep --revision=3
deployment.apps/minikube-first-dep with revision #3
Pod Template:
Labels: app=minikube-first-dep
pod-template-hash=74d9ffd4d8
Containers:
python-repo-kxv7q:
Image: abhishek2023/python_repo:NA
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>=> Let we check revision history : This revision is Current Code
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout history deployment/minikube-first-dep --revision=4
deployment.apps/minikube-first-dep with revision #4
Pod Template:
Labels: app=minikube-first-dep
pod-template-hash=6f558d4dbf
Containers:
python-repo-kxv7q:
Image: abhishek2023/python_repo:4.0
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>
shreeganesh@aim2022:~/Desktop/Docker$ Now let we suppose to go back to original deployment , we need to execute below commands for the same.
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout undo deployment/minikube-first-dep --to-revision=1
deployment.apps/minikube-first-dep rolled back
shreeganesh@aim2022:~/Desktop/Docker$ kubectl rollout status deployment/minikube-first-dep
deployment "minikube-first-dep" successfully rolled out
shreeganesh@aim2022:~/Desktop/Docker$Let we check Deployment : We are now at original deployment
No comments:
Post a Comment