본문 바로가기
Compute/kubernetis

[따배씨] 7. Rolling Update & Roll Back / CKA 시험 문제 학습

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

이 포스팅은 아래의 유튜브 채널 "따배"를 따라서 학습한 내용입니다.  

 

 

[관련 이론]

 


 

 

[Precondition]

(1) 테스트 환경

(1.1) Rocky Linux Cluster 

: 직접 구성

[root@k8s-master ~]# k get nodes -o wide
NAME         STATUS   ROLES           AGE   VERSION   INTERNAL-IP     EXTERNAL-IP   OS-IMAGE                            KERNEL-VERSION                  CONTAINER-RUNTIME
k8s-master   Ready    control-plane   30d   v1.27.2   192.168.56.30   <none>        Rocky Linux 8.10 (Green Obsidian)   4.18.0-553.33.1.el8_10.x86_64   containerd://1.6.32
k8s-node1    Ready    <none>          30d   v1.27.2   192.168.56.31   <none>        Rocky Linux 8.8 (Green Obsidian)    4.18.0-477.10.1.el8_8.x86_64    containerd://1.6.21
k8s-node2    Ready    <none>          30d   v1.27.2   192.168.56.32   <none>        Rocky Linux 8.8 (Green Obsidian)    4.18.0-477.10.1.el8_8.x86_64    containerd://1.6.21
[root@k8s-master ~]#

 

(1.2) Ubuntu Cluster 

: kodekloud 테스트 환경 활용

controlplane ~ ➜  kubectl get nodes -o wide
NAME           STATUS   ROLES           AGE     VERSION   INTERNAL-IP   EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION   CONTAINER-RUNTIME
controlplane   Ready    control-plane   9m6s    v1.31.0   192.6.94.6    <none>        Ubuntu 22.04.4 LTS   5.4.0-1106-gcp   containerd://1.6.26
node01         Ready    <none>          8m31s   v1.31.0   192.6.94.9    <none>        Ubuntu 22.04.4 LTS   5.4.0-1106-gcp   containerd://1.6.26

https://learn.kodekloud.com/user/courses/udemy-labs-certified-kubernetes-administrator-with-practice-tests

 

 

(2) 사전 필요 설정 

   : k8s context 생성 

controlplane ~ ➜  k config get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   

controlplane ~ ✖ k config get-users 
NAME
kubernetes-admin

controlplane ~ ➜  k config set-context k8s --cluster kubernetes --user kubernetes-admin
Context "k8s" created.

controlplane ~ ➜  k config get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
          k8s                           kubernetes   kubernetes-admin   
*         kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   

controlplane ~ ➜  k config use-context k8s 
Switched to context "k8s".

controlplane ~ ➜  k config get-contexts 
CURRENT   NAME                          CLUSTER      AUTHINFO           NAMESPACE
*         k8s                           kubernetes   kubernetes-admin   
          kubernetes-admin@kubernetes   kubernetes   kubernetes-admin   

controlplane ~ ➜

 


 

 

[Question]

Create a deployment as follows:
TASK:
- name : nginx-app
- Using container nginx with version 1.11.10-alpine
- The deployment should contain 3 replicas

Next, deploy the application with new version 1.11.13-alpine, by performing a rolling update
Finally, rollback that update to the previous version 1.11.10-alpine

 

 

[Solve]

(1) delployment 생성 

controlplane ~ ➜  k create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3 --dry-run=client -o yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: nginx-app
  name: nginx-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-app
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx-app
    spec:
      containers:
      - image: nginx:1.11.10-alpine
        name: nginx
        resources: {}
status: {}

controlplane ~ ➜  k create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3 
deployment.apps/nginx-app created

 

 

: 생성한 deployment 확인 

 

 

 

 

(2) deployment image version 업데이트 

controlplane ~ ➜  k set image deployments/nginx-app nginx=nginx:1.11.13-alpine
deployment.apps/nginx-app image updated
controlplane ~ ➜  k describe pods/nginx-app-54bd5c79dd-69wrl

 

: nginx image update 상태 확인 

controlplane ~ ➜  k rollout status deployment/nginx-app 
deployment "nginx-app" successfully rolled out

 

 

(3) 이미지 버전 rollback 

controlplane ~ ➜  k rollout undo deployment/nginx-app 
deployment.apps/nginx-app rolled back

controlplane ~ ➜  k rollout status deployment/nginx-app 
deployment "nginx-app" successfully rolled out


 

 

[사용 커맨드 정리]

k config use-context k8s 

k create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3 --dry-run=client -o yaml

k create deployment nginx-app --image=nginx:1.11.10-alpine --replicas=3

k set image deployments/nginx-app nginx=nginx:1.11.13-alpine

k describe pods/nginx-app-54bd5c79dd-69wrl 

k rollout status deployment/nginx-app 

k rollout undo deployment/nginx-app

k rollout status deployment/nginx-app 

k describe pods/nginx-app-7bf488585-9dnws 

반응형