본문 바로가기
Compute/kubernetis

[CKA] 08. deployment 생성 | deployment scale out

by 조청유곽 2025. 1. 14.
반응형

01. deployment의 scale을 조정 / pod의 스케일인 or 스케일아웃을 확인 

 

[precondition]

: deployment의 scale을 3으로 조정하기 위해서 먼저 2개의 pod를 가지는 deployment를 먼저 생성함 

[root@k8s-master ~]# vi 10-test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80

[root@k8s-master ~]# kubectl apply -f 10-test.yaml 
deployment.apps/nginx-deployment created

[root@k8s-master ~]# kubectl get pods | grep nginx-deployment
nginx-deployment-cbdccf466-6nqjr   1/1     Running            0              4m17s
nginx-deployment-cbdccf466-wf8gk   1/1     Running            0              4m17s
[root@k8s-master ~]#

 

[solve]

[root@k8s-master ~]# kubectl scale --replicas=3 deployment/nginx-deployment
deployment.apps/nginx-deployment scaled
[root@k8s-master ~]# kubectl get pods | grep nginx-deployment
nginx-deployment-cbdccf466-6nqjr   1/1     Running            0                6m4s
nginx-deployment-cbdccf466-nsp68   1/1     Running            0                5s
nginx-deployment-cbdccf466-wf8gk   1/1     Running            0                6m4s
[root@k8s-master ~]#

02. deployment를 생성하고 service에 연결한다. nslookup을 이용해서 dns 정보를 확인하고 특정 파일로 생성한다. 

 

[solve]

[root@k8s-master ~]# kubectl get deployments.apps 
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   6/6     6            6           5h4m
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl expose deployment/nginx-deployment 
service/nginx-deployment exposed
[root@k8s-master ~]# vi dnsutils.yaml
[root@k8s-master ~]# kubectl apply -f dnsutils.yaml 
pod/dnsutils created
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl exec -it dnsutils -- nslookup k8s
Server:		10.96.0.10
Address:	10.96.0.10#53

** server can't find k8s: NXDOMAIN

command terminated with exit code 1
[root@k8s-master ~]# kubectl exec -it dnsutils -- nslookup kubernetes.default
Server:		10.96.0.10
Address:	10.96.0.10#53

Name:	kubernetes.default.svc.cluster.local
Address: 10.96.0.1

[root@k8s-master ~]# kubectl exec -it dnsutils -- nslookup nginx-deployment
Server:		10.96.0.10
Address:	10.96.0.10#53

Name:	nginx-deployment.default.svc.cluster.local
Address: 10.101.72.39

[root@k8s-master ~]# kubectl exec -it dnsutils -- nslookup nginx-deployment > /opt/pod.dns
[root@k8s-master ~]# cat /opt/pod.dns 
Server:		10.96.0.10
Address:	10.96.0.10#53

Name:	nginx-deployment.default.svc.cluster.local
Address: 10.101.72.39

[root@k8s-master ~]#

03. deployment를 생성하고 특정 이미지 버전으로 업데이트를 진행한다. 업데이트 후 이전 버전으로 다시 롤백을 진행한다. 

 

[solve]

[root@k8s-master ~]# vi 50-test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-app
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80

[root@k8s-master ~]# kubectl apply -f 50-test.yaml 
deployment.apps/nginx-app created
[root@k8s-master ~]# kubectl set image deployment/nginx-app nginx=nginx:1.11.13-alpine
deployment.apps/nginx-app image updated
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl describe pods nginx-app-578594c58-5zmhr 
Error from server (NotFound): pods "nginx-app-578594c58-5zmhr" not found
[root@k8s-master ~]# kubectl describe pods nginx-app-766c77587f-
nginx-app-766c77587f-dsqmg  nginx-app-766c77587f-gzvtd  nginx-app-766c77587f-w64pp  
[root@k8s-master ~]# kubectl describe pods nginx-app-766c77587f-dsqmg 
Name:             nginx-app-766c77587f-dsqmg
Namespace:        default
Priority:         0
Service Account:  default
Node:             k8s-node2/192.168.56.32
Start Time:       Sat, 28 Dec 2024 22:09:36 +0900
Labels:           app=nginx
                  pod-template-hash=766c77587f
Annotations:      cni.projectcalico.org/containerID: 54b264870455ff16b090f05fa3f7dce8bdb8c171fbb6f0d5d88c7e1ac381412e
                  cni.projectcalico.org/podIP: 20.96.169.179/32
                  cni.projectcalico.org/podIPs: 20.96.169.179/32
Status:           Running
IP:               20.96.169.179
IPs:
  IP:           20.96.169.179
Controlled By:  ReplicaSet/nginx-app-766c77587f
Containers:
  nginx:
    Container ID:   containerd://761785b86fca729cccaebfabc31922a0b1e2741f2391f451eb903037c9fb0482
    Image:          nginx:1.11.13-alpine
    Image ID:       docker.io/library/nginx@sha256:5aadb68304a38a8e2719605e4e180413f390cd6647602bee9bdedd59753c3590
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sat, 28 Dec 2024 22:09:38 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-fqfvt (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-fqfvt:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  23s   default-scheduler  Successfully assigned default/nginx-app-766c77587f-dsqmg to k8s-node2
  Normal  Pulling    23s   kubelet            Pulling image "nginx:1.11.13-alpine"
  Normal  Pulled     21s   kubelet            Successfully pulled image "nginx:1.11.13-alpine" in 1.567263854s (1.567276841s including waiting)
  Normal  Created    21s   kubelet            Created container nginx
  Normal  Started    21s   kubelet            Started container nginx
[root@k8s-master ~]# 
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl rollout undo deployment nginx-app
deployment.apps/nginx-app rolled back
[root@k8s-master ~]# 
[root@k8s-master ~]# 
[root@k8s-master ~]# kubectl describe pods nginx-app-766c77587f-dsqmg 
Error from server (NotFound): pods "nginx-app-766c77587f-dsqmg" not found
[root@k8s-master ~]# kubectl describe pods nginx-app-578594c58-5zmhr 
Error from server (NotFound): pods "nginx-app-578594c58-5zmhr" not found
[root@k8s-master ~]# kubectl describe pods nginx-app-55f598f8d-
nginx-app-55f598f8d-6558z  nginx-app-55f598f8d-m9dbb  nginx-app-55f598f8d-rfwfv  
[root@k8s-master ~]# kubectl describe pods nginx-app-55f598f8d-6558z 
Name:             nginx-app-55f598f8d-6558z
Namespace:        default
Priority:         0
Service Account:  default
Node:             k8s-node2/192.168.56.32
Start Time:       Sat, 28 Dec 2024 22:10:14 +0900
Labels:           app=nginx
                  pod-template-hash=55f598f8d
Annotations:      cni.projectcalico.org/containerID: b03e59bca70c12e42b99e1bec16d84ec423263e19403a8dc2dc19e557c0b0a72
                  cni.projectcalico.org/podIP: 20.96.169.180/32
                  cni.projectcalico.org/podIPs: 20.96.169.180/32
Status:           Running
IP:               20.96.169.180
IPs:
  IP:           20.96.169.180
Controlled By:  ReplicaSet/nginx-app-55f598f8d
Containers:
  nginx:
    Container ID:   containerd://e5ea62562b9b67a7d7a94b3d8c6c6fd7ac17742fc76881fa8ab5362dd806febe
    Image:          nginx
    Image ID:       docker.io/library/nginx@sha256:42e917aaa1b5bb40dd0f6f7f4f857490ac7747d7ef73b391c774a41a8b994f15
    Port:           80/TCP
    Host Port:      0/TCP
    State:          Running
      Started:      Sat, 28 Dec 2024 22:10:16 +0900
    Ready:          True
    Restart Count:  0
    Environment:    <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-jbz8n (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             True 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  kube-api-access-jbz8n:
    Type:                    Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds:  3607
    ConfigMapName:           kube-root-ca.crt
    ConfigMapOptional:       <nil>
    DownwardAPI:             true
QoS Class:                   BestEffort
Node-Selectors:              <none>
Tolerations:                 node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  37s   default-scheduler  Successfully assigned default/nginx-app-55f598f8d-6558z to k8s-node2
  Normal  Pulling    37s   kubelet            Pulling image "nginx"
  Normal  Pulled     35s   kubelet            Successfully pulled image "nginx" in 1.647072305s (1.64708808s including waiting)
  Normal  Created    35s   kubelet            Created container nginx
  Normal  Started    35s   kubelet            Started container nginx
[root@k8s-master ~]#

 

반응형