샤인의 IT (막 적는) 메모장

[Kubernetes 기본 정리] 쿠버네티스 리소스 본문

Container/Kubernetes 기본

[Kubernetes 기본 정리] 쿠버네티스 리소스

신샤인 2021. 4. 15. 14:52
반응형

Kubernetes 기본 리소스 구성

기본 구조.

 

Kubernetes에서 배포할 때 기본적으로 Deployment나 Statefulset을 이용하여 Pod를 배포한다

 

 

Pod는 하나의 컨테이너 뿐 아니라 내부에 복수 컨테이너를 집어넣어 배포할 수 있다.

 

 

예로들면 개발자가 App을 만들어 이미지로 만들고(Dockerfile) App이 올라가는 곳이 파드이다.

 

 

 

보통 Pod만 배포해서 사용하지 않고 그 Pod들을 관리하기 위해 Deployment나 Statefulset을 사용한다.

 

 

 

Deployment = Stateless Pod 배포 리소스

 

 

 

Statefulset = Stateful Pod 배포 리소스

 

 

 

Stateless와 Stateful에 대해서 알아야하는데 해석 그대로 상태를 가지냐 안가지냐로 나뉜다.

 

 

 

나는 주로 데이터를 저장하느냐 안하느냐로 Stateless와 Stateful을 이해한다.

 

 

 

이 상태에 대해서 여러 깊은? 얘기하시는 분들도 있지만 쉽게 이해하자면 데이터 저장의 유무를 생각하면 된다.

 

 

 

여기서 더 웃긴 얘기는 Deployment도 볼륨을 붙여서 배포할 수 있다는 점이다.

 

 

 

여기서 더 깊게 들어가면 Replica(복제본)을 이해해야한다.

 

 

 

쿠버네티스는 Replica를 너무나도 쉽게 Scale-Out Scale-In이 가능하다.

 

 

이 Replica를 관리하는 리소스가 ReplicaSet인데 이전에는 ReplicationController였으나 Deplicated 되었으며

 

업데이트 된 버전이라고 생각하면 될 것 같다.

 

해당 기능은 크게 차이는 없는데, 등호 방식-집합 방식(equlity-based/set-based) 표현의 차이가 있다.

 

이렇게 Replica를 늘리고 줄일 수 있는데 해당 Pod들을 늘릴 경우에는 어떻게 될까?

 

Deployment는 따로 저장소를 가지고 있지 않기 때문에 Pod들이 쉽게 늘어날 수 있지만 PV가 연결된 StatefulSet은?

 

볼륨으로 연결된 PVC까지 같이 늘어난다. 이 차이다.

 

디플로이먼트는 Stateless 하지만 볼륨을 연결할 수 있다. 다만 Single Instance로만 연결할 수 있다. Scale out은? 안된다!

 

결국 디플로이먼트도 Stateful한 App을 배포할 수 있지만 Replica는 확장할 수 없다. (그래서 대부분 Stateless한 경우 사용한다고 표현한다)

 

여기서 이렇게 Deployment나 StatefulSet으로 배포한 후 외부에서 접속하기 위한 네트워킹 리소스로 서비스가 필요하다.

 

클러스터에서 배포만 된 상태로 해당 파드에 접속하기 위해서 따로 서비스 리소스를 통하여 접속한다.

 

서비스 종류는 여러가지 있지만 나중에 정리

 

 

 

반응형
Comments