[K8S] Pod, ReplicaSet, Deployment를 알아보자

Drumj·2024년 9월 28일
0

쿠버네티스

목록 보기
3/5
post-thumbnail

Pod

파드는 하나 또는 그 이상의 애플리케이션 컨테이너 (도커와 같은)들의 그룹을 나타내는 쿠버네티스의 추상적 개념으로 일부는 컨테이너에 대한 자원을 공유한다

파드와 노드보기


ReplicaSet

레플리카셋의 목적은 레플리카 파드 집합의 실행을 항상 안정적으로 유지하는 것이다. 이처럼 레플리카셋은 보통 명시된 동일 파드 개수에 대한 가용성을 보증하는데 사용한다

레플리카셋


Deployment

디플로이먼트(Deployment) 는 파드와 레플리카셋(ReplicaSet)에 대한 선언적 업데이트를 제공한다.
디플로이먼트


내가 이해한 거

위에는 그냥 간단하게 공식 설명을 가져온 것이고...

내가 이해한 것을 정리해보자.

먼저 애플리케이션을 배포하기 위해 deployment 를 실행하면
delpoyment 는 replicaset 을 만들고 replicaset 은 pod 를 만든다.


pod

pod는 쿠버네티스 플랫폼 상 가장 작은 단위.

각 pod 에는 각각의 ip 가 존재한다고 한다.
그리고 이런 pod 는 node 에 속해있는데 이 노드는 AWS의 EC2 라고 생각하면 편할 것 같다.

그리고 pod 는 컴퓨터에서 돌아가는 서버라고 생각해야하나...?

pod가 3개가 만들어져 있으면 부하에 맞게 각각의 pod로 사용자가 연결된다(이게 맞는 설명..인가..?)
강의를 따라해보면 8080/hello-world 에서 연속으로 새로고침을 하다보면 pod 의 이름이 바뀌는 것을 확인 할 수 있다.


Replicaset

이 녀석은 pod가 특정 수의 포드가 늘 실행되도록 만든다.
만약 replicaset의 인스턴스 수를 3으로 설정하면 pod가 항상 3개 돌아가도록 해준다.

kubectl scale deployment hello-world-rest-api --replicas=3

위 명령어로 특정 deployment 의 replicaset 의 수를 3으로 설정한다면 pod의 수도 3개로 조정이 된다.

그리고 이 replicaset 은 특정 릴리즈 버전에 묶여있다.

만약 deployment 를 업데이트 해서 릴리즈 버전을 0.0.1에서 0.0.2 로 바꾼다면 기존에 실행되고 있던 0.0.1 replicaset 은 그대로 존재하고 새로운 replicaset 을 만들어 해당 relicaset 안의 pod 에서는 0.0.2 버전의 애플리케이션이 실행된다. 그리고 정상적으로 실행되면 0.0.1의 replicaset 은 pod 수를 하나씩 줄여 0으로 만든다.


Deployment

이 녀석은 애플리케이션을 안정적으로 배포하고 업데이트되게 해준다.

이미 0.0.1 버전을 배포해서 실행하고 있는데 0.0.2 버전으로 업데이트를 한다면

kubectl set image deployment hello-world-rest-api hello-world-rest-api=in28min/hello-world-rest-api:0.0.2.RELEASE

0.0.1 버전이 다운되지 않고 실행중이면서 그대로 0.0.2 업데이트를 진행해서 서비스가 끊기지 않고 버전 업데이트를 도와준다.

즉 위 ReplicaSet 에서도 봤듯이 새로운 0.0.2 버전용 replicaset 과 pod 를 만들어 서버의 끊김 없이 업데이트를 도와준다.


참고

  • Udemy - [한글자막] 초보자를 위한 Kubernetes 완벽강의 : 구글 Cloud, AWS 및 Azure

그리고 처음 쿠버네티스를 사용하는거라... 당연히 제가 이해한게 틀릴 수 있습니다.
틀린 부분이 있다면 댓글로 알려주시면 감사하겠습니다.

0개의 댓글