K8s

[ K8s ] 쿠버네티스 기본 사용법 - 파드 업데이트 하고 복구하기

미스터 한뺑 2023. 6. 12. 13:40
반응형

파드를 운영하다 보면 컨테이너에 새로운 기능을 추가해야하거나 치명적인 버그가 발생해 버전을 업그레이드 해야할 때가 있다. 그러기 위해서 파드를 업데이트하고 파드에 문제가 생기면 복구를 해야할 것이다. 

이번 포스팅은 파드을 업데이트하고 복구하는 방법을 포스팅하겠다. 

 

1. 파드 업데이트 하기

 

1. 파드를 생성한다. 

업데이트를 하기 위해서 앞에서 배운 apply 명령어를 사용해 파드를 생성을 했고 실습파일 야믈파일을 이용해 파드를 작성을 하였다. 

 

2. 파드가 잘 생성이 됬는지 확인한다 .

 

3. 배포된 파드에 속해 있는 nginx 컨테이너 버전을 확인한다.

 

4. 여기서 1.15.12버전을 1.16.0버전으로 바꿔보자 

kubectl set image deployment rollout-nginx nginx=nginx:1.16.0 --record

위에 있는 명령어를 적고 파드 정보를 확인을 하니 파드의 이름과 IP가 달라져있는걸 확인할수 있다. 컨테이너를 가장 쉽게 업데이트하는 방법은 파드를 새로 생성하는 것이다. 이때 시스템의 영향을 최소화하기 위해 replicas에 속한 파드를 모두 지우는게 아니라 파드를 하나씩 순차적으로 지우고 생성하기 때문에 이름과 IP가 달라지는 것이다.

 

5. nginx 컨테이너가 1.16.0으로 모두 업데이트되면 Deployment의 상태를 확인한다

 

6. history명령어로 적용된 명령을 확인한다.

1번째 줄은 파드를 생성한 명령어이고 2번째 줄은 1.16.0버전으로 업그레이드한 명령어이다 . 이제 버전을 확인을 해보면 

버전이 바뀐걸 볼수 있다.

 

2. 업데이트 실패 시 파드 복구하기

 

1. 컨테이너 버전을 다르게 입력한다. 1.17.23으로 지정할 것이다.(1.17.23버전은 없음)

set image명령어를 써서 버전을 바꿔보자. 업데이트가 됐다고 뜨면 확인을 해보자

 

2. 파드확인하기

시간이 지나도 새로 생성된 파드가 있는데 기존 파드가 삭제가 안되는것을 알 수 있다. 여기서 문제를 확인 할수 있는 방법은 rollout status을 실행 해보는것이다. 새로운 replicas는 생성했으나 deployment를 배포하는 단계에서 대기중으로 더 이상 진행이 안되는 것을 알 수 있다. 

 

여기서 자세하게 문제를 확인을 하려면 describe명령어를 쓰면 알수가 있다 . replicas가 새로 생성되는 과정엣 멈춰있는걸 볼 수 가 있다. 그 이유는 1.17.23 버전의 컨테이너가 없기 때문이다. 

kubectl describe deployment rollout-ngninx

그러면 여기서 어떻게 다시 돌아갈수 있을까? 일단 history에 들어간다. 

 

여기서 3번째를 삭제를 해서 2번으로 돌아가야한다. 그러면 rollout undo 명령어를 쓰면 돌아갈수 있다 .

kubectl rollout undo deployment rollout-nginx

다시 history를 확인 해보면 

순번에서 2가 없어지고 4번이 생기고 버전도 다시 돌아간 것을 확인할 수이다.

 

그리고 describe 명령어로 현재 deployment 상태도 점검하고 넘어간다 . 

 

 

3. 특정 시점으로 파드 복구하기 

 

1. 특정 시점으로 버전을 복구하고 싶을때는 --to-revision이라는 옵션을 사용한다. 

kubectl rollout undo deployment rollout-nginx --to-revision=1

 

2. 바뀐 IP확인

 

3. 버전 확인

버전이 처음에 설정한 버전으로 복구가 된 것을 알 수 있다. 이런 방법으로 파드를 쉽게 관리를 할 수 있다. 

반응형