[Kubernetes]ReplicaSet & Deployment

김동주·2024년 5월 19일

ReplicaSet

  • ReplicaSet의 목적은 언제든지 실행되는 안정적인 복제본 Pod 세트를 유지해준다. 따라서 지정된 수의 동일한 Pod의 가용성을 보장하는 데 자주 사용된다.
  • 노드 장애 등의 이유로 포드를 사용할 수 없을 때 다른 노드에서 포드를 다시 생성한다.
  • 레플리카셋의 목적은 ‘포드를 생성하는 것'이 아닌, ‘일정 개수의 포드를 유지하는 것’이다.

    방식은 pod를 배포하는 방법과 비슷하다. template을 작성해준다음 원하는 pod의 수를 replicas에서 설정해주면 된다.

또한 원하는 pod개수를 조정해줄때는 직접 kubectl replace 명렁어를 통해 yml파일에서 replicas 수를 변경해주거나 kubeclt scale명렁어를 통해서 바로 replicas를 설정해주면 댄다.

Deployment

실무에선 굳이 Replicaset을 사용하지 않는다. 이유는 Replicaset은 업데이트와 같은 기능이 없고 Deployment를 사용하면 포드와 레플리카셋을 직접 생성할 필요가 없기 때문이다.
Deployment 사용이유

  • Deployment는 Pod와 ReplicaSet에 대한 선언적 업데이트를 제공한다.
  • 하위에 ReplicaSet을 제어하고, ReplicaSet이 하위의 Pod을 제어하는 구조이며, Deployment가 ReplicaSet을 제어하므로, 관리자는 Deployment 하단의 ReplicaSet을 직접 관리하면 안된다.
  • Deploymensms Rolling Update, Recreate,Blue/Green, Canary배포를 지원한다.

    보면 Deployment를 배포하였는데도 ReplicaSet이 생성된 모습을 볼 수 있다.

Deployment rolling update vs Recreate

  • rolling update는 V1을 V2로 업데이트 할 때, V2를 하나 생성한 뒤 V1을 삭제하는 방식으로 Pod를 하나씩 점진적으로 교체해나가는 방법입니다.
  • Recreate는 기존의 Pod을 모두 삭제한 뒤, 새로운 버전의 Pod을 선언한 갯수만큼 생성해주는 방식입니다.

Deployment로 Rolling Update 실습

  • 직접 yml파일을 변경해주고 kubectl apply 커맨드를 이용해 배포해줄 수 있다.
  • kubectl set 커맨드는 애플리케이션 리소스를 설정하는 커맨드로 env, image, resources, selector, serviceaccount, subject를 업데이트하거나 변경할 수 있다.
  • 따로 strategy를 설정해주지 않으면 기본값으로 Rolling Update가 선택된다.
  • Recreate설정을 해주려면

    -> 다음과 같이 strategy를 지정해주어야한다.

kubectl describe 커맨드로 Events를 비교했을때 점진적인 부분에서 차이가 나는 것을 확인할 수 있다.

Deployment rollout

배포 Roll-Back
Revision을 이용해 Deployment의 Rollback이 가능함 방법
1. Deployment Roll-out 기록 확인
kubectl rollout history deployment/{Deployment 명}
2. 해당 revision의 세부 정보 확인
kubectl rollout history deployment/{Deployment 명} --revision={조회할 revision}
3. Roll-Back
kubectl rollout undo deployment/{Deployment 명}
직전 버전으로 롤백

kubectl rollout undo deployment/{Deployment 명} -to-revision={revision}
특정 버전으로 롤백 하려면 --to-revision 옵션을 이용해 원하는 버전을 명시해줌.

kubectl annotate deployment/{Deployment 명} kubernetes.io/change-cause="some cause"
배포 주석 남기는 방법

https://jh-labs.tistory.com/506
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/19374124#overview

https://velog.io/@salgu1998/Kubernetes-%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-Deployment

profile
더욱 더 발전된 엔지니어가 되기 위한 개인 공부 블로그(DevOps/Cloud)

0개의 댓글