Start Preparation Smartly

We have the collection to start prepartion smartly.

Start Assessment

Learn Kubernetes | K8s Tutorial for Beginners

  DevOps Tech Hub

116 Followers

Deployment Controller


 What is Deployment?

Deployment is the process of running the application work load on the POD. 

Create manifest file for Deployment in Kubernetes cluster

Create "createDeployment.yaml" file with the below manifest file definitions

#Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deploy
  labels:
    app: nginx-app

spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-app
  template:
    metadata:
      labels:
        app: nginx-app
    spec:
      containers:
      - name: nginx-container
        image: nginx
        ports:
        - containerPort: 80

Create Deployment in K8s cluster

[root@ ~]$kubectl apply -f createDeployment.yaml
deployment.apps/nginx-deploy created
[root@ ~]$

Verify Deployments

[root@ ~]$kubectl get deploy
NAME           READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deploy   3/3     3            3           36s
[root@ ~]$kubectl get deploy -o wide
NAME           READY   UP-TO-DATE   AVAILABLE   AGE   CONTAINERS        IMAGES   SELECTOR
nginx-deploy   3/3     3            3           39s   nginx-container   nginx    app=nginx-app
[root@ ~]$

Verify Replica Sets

[root@ ~]$kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-7dcc9fb9c4   3         3         3       2m19s
[root@ ~]$kubectl get rs -o wide
NAME                      DESIRED   CURRENT   READY   AGE     CONTAINERS        IMAGES   SELECTOR
nginx-deploy-7dcc9fb9c4   3         3         3       2m21s   nginx-container   nginx    app=nginx-app,pod-template-hash=7dcc9fb9c4
[root@ ~]$

Verify running PODs

[root@ ~]$kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-2zkwg   1/1     Running   0          2m54s
nginx-deploy-7dcc9fb9c4-5pl8l   1/1     Running   0          2m54s
nginx-deploy-7dcc9fb9c4-pvflw   1/1     Running   0          2m54s
[root@ ~]$kubectl get po
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-2zkwg   1/1     Running   0          2m57s
nginx-deploy-7dcc9fb9c4-5pl8l   1/1     Running   0          2m57s
nginx-deploy-7dcc9fb9c4-pvflw   1/1     Running   0          2m57s
[root@ ~]$

Describe Replica Set configuration

[root@ ~]$kubectl describe rs
Name:           nginx-deploy-7dcc9fb9c4
Namespace:      default
Selector:       app=nginx-app,pod-template-hash=7dcc9fb9c4
Labels:         app=nginx-app
                pod-template-hash=7dcc9fb9c4
Annotations:    deployment.kubernetes.io/desired-replicas: 3
                deployment.kubernetes.io/max-replicas: 4
                deployment.kubernetes.io/revision: 1
Controlled By:  Deployment/nginx-deploy
Replicas:       3 current / 3 desired
Pods Status:    3 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  app=nginx-app
           pod-template-hash=7dcc9fb9c4
  Containers:
   nginx-container:
    Image:        nginx
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Events:
  Type    Reason            Age    From                   Message
  ----    ------            ----   ----                   -------
  Normal  SuccessfulCreate  3m24s  replicaset-controller  Created pod: nginx-deploy-7dcc9fb9c4-5pl8l
  Normal  SuccessfulCreate  3m24s  replicaset-controller  Created pod: nginx-deploy-7dcc9fb9c4-2zkwg
  Normal  SuccessfulCreate  3m24s  replicaset-controller  Created pod: nginx-deploy-7dcc9fb9c4-pvflw
[root@ ~]$

Describe Deployment configuration

[root@ ~]$kubectl describe deploy
Name:                   nginx-deploy
Namespace:              default
CreationTimestamp:      Sat, 04 Jul 2020 06:32:36 +0000
Labels:                 app=nginx-app
Annotations:            deployment.kubernetes.io/revision: 1
Selector:               app=nginx-app
Replicas:               3 desired | 3 updated | 3 total | 3 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:  app=nginx-app
  Containers:
   nginx-container:
    Image:        nginx
    Port:         80/TCP
    Host Port:    0/TCP
    Environment:  <none>
    Mounts:       <none>
  Volumes:        <none>
Conditions:
  Type           Status  Reason
  ----           ------  ------
  Available      True    MinimumReplicasAvailable
  Progressing    True    NewReplicaSetAvailable
OldReplicaSets:  <none>
NewReplicaSet:   nginx-deploy-7dcc9fb9c4 (3/3 replicas created)
Events:
  Type    Reason             Age    From                   Message
  ----    ------             ----   ----                   -------
  Normal  ScalingReplicaSet  3m53s  deployment-controller  Scaled up replica set nginx-deploy-7dcc9fb9c4 to 3
[root@ ~]$

Scale Out POD Replicas in the Replica Set managed by Deployment

[root@ ~]$kubectl scale deployment nginx-deploy --replicas=5
deployment.apps/nginx-deploy scaled
[root@ ~]$kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-8dtc2   1/1     Running   0          43s
nginx-deploy-7dcc9fb9c4-c5tg2   1/1     Running   0          43s
nginx-deploy-7dcc9fb9c4-tt2fc   1/1     Running   0          43s
nginx-deploy-7dcc9fb9c4-z29qq   1/1     Running   0          4s
nginx-deploy-7dcc9fb9c4-zjf78   1/1     Running   0          4s
[root@ ~]$kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-7dcc9fb9c4   5         5         5       50s
[root@ ~] POD Replicas in the Replica Set managed by Deployment
[root@ ~]$kubectl scale deployment nginx-deploy --replicas=3
deployment.apps/nginx-deploy scaled
[root@ ~]$kubectl get pods
NAME                            READY   STATUS        RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-8dtc2   1/1     Running       0          2m3s
nginx-deploy-7dcc9fb9c4-c5tg2   1/1     Running       0          2m3s
nginx-deploy-7dcc9fb9c4-tt2fc   1/1     Running       0          2m3s
nginx-deploy-7dcc9fb9c4-z29qq   0/1     Terminating   0          84s
[root@ ~]$kubectl get pods
NAME                            READY   STATUS        RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-8dtc2   1/1     Running       0          2m6s
nginx-deploy-7dcc9fb9c4-c5tg2   1/1     Running       0          2m6s
nginx-deploy-7dcc9fb9c4-tt2fc   1/1     Running       0          2m6s
nginx-deploy-7dcc9fb9c4-z29qq   0/1     Terminating   0          87s
[root@ ~]$kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-8dtc2   1/1     Running   0          2m9s
nginx-deploy-7dcc9fb9c4-c5tg2   1/1     Running   0          2m9s
nginx-deploy-7dcc9fb9c4-tt2fc   1/1     Running   0          2m9s
[root@ ~]$kubectl get rs
NAME                      DESIRED   CURRENT   READY   AGE
nginx-deploy-7dcc9fb9c4   3         3         3       2m14s
[root@ ~]$

Delete Deployment

[root@ ~]$kubectl delete deploy nginx-deploy
deployment.apps "nginx-deploy" deleted
[root@ ~]$kubectl get pods
NAME                            READY   STATUS        RESTARTS   AGE
nginx-deploy-7dcc9fb9c4-pvflw   0/1     Terminating   0          6m30s
[root@ ~]$kubectl get pods
No resources found in default namespace.
[root@ ~]$kubectl get rs
No resources found in default namespace.
[root@ ~]$kubectl get deploy
No resources found in default namespace.
[root@ ~]$



Previous Next