[Kubernetes](Concept)쿠버네티스 리소스 - 어플리케이션 실행(Pod/ReplicaSet/Delpoyment/DaemonSet/StatefulSet)
업데이트:
쿠버네티스 리소스
쿠버네티스는 유연한 어플리케이션 실행 환경 관리를 소프트웨어로 수행하기 때문에 다양한 것들을 추상화하고 있다. 이렇게 추상화한 것을 쿠버네티스에서는 리소스라고 부른다.
파드(Pod)
- 쿠버네티스에서는 여러 개의 컨테이너를 모아서 파드로 관리한다.
- 파드안에는 어플리케이션 서버용 컨테이너와 프록시 서버용 컨테이너 등과 관련된 것을 모아 관리할 수 있다.
- 쿠버네티스에서 이 파드가 어플리케이션의 배 포단위가 되며, 포드 단위로 컨테이너의 작성, 시작, 정지, 삭제 등과 같은 조작을 한다.
- 동일한 파드안의 컨테이너는 반드시 동일한 노드 상에 동시에 디플로이된다는 특징이 있다.
- 파드안의 여러 컨테이너에서 가상 NIC를 공유하는 구성을 취하기 때문에 컨테이너 끼리 localhost를 경유하여 통신할 수 있다. 또 디렉토리도 공유할 수 있다.
리플리카셋 (ReplicaSet)
- 클러스터 안에서 지정된 수의 파드를 기동시켜 주는 장치
- 가동 중인 파드를 감시하여 장애 등 뭔가의 이유로 정지된 경우 해당 포드를 삭제하고 새로운 포드를 기동시킨다. 즉, 항상 필요한 수만큼 포드가 기동된 상태를 클러스터 안에 만드는 역할을 한다.
- 클러스터 안에 포드를 가동시켜 두는 값을 ‘리플리카 수’ 라고 한다.
디플로이먼트(Deployment)
- 어플리케이션의 배포 단위를 관리 하는 것
- 디플로이먼트는 리플리카셋의 이력을 가지고 있어서 포드 안의 컨테이너를 버전업하고 싶을 때 시스템을 정지시키지 않고 버전업을 하는 롤링 업데이트를 할 수 있다. 또한 이 이력을 바탕으로 하나 앞 세대로 롤백할 수 도 있다
데몬셋(DaemonSet)
- 파드는 스케줄링을 어떤 노드에서 할지 쿠버네티스가 결정한다. 하지만 로그 콜렉터나 모니터링 에이전트처럼 각각의 노드에서 반드시 하나씩 작동시키고 싶은 경우가 있다.
- 이럴 때 사용하는 것이 데몬셋이다. 데몬셋은 클러스터의 전체 노드에 포드를 하나 작성한다.
- 데몬셋도 리플리카셋과 마찬가지로 매니페스트 파일에서 정의한 대로의 상태를 유지하도록 움직인다.
- 즉, 어떤 노드에서 데몬셋으로 정의한 포드가 움직이고 있지 않다면 데몬셋 컨트롤러가 이를 감지하고 해당 노드에 포드를 생성시킨다.
- 단, 데몬셋은 리플리카셋과 달리 리플리카 수를 지정할 수 없다.
- 사실 노드 상에 움직이는 쿠버네티스의 네트워크 프록시 기능인 ‘kube-proxy’도 이 데몬셋을 사용하여 움직이고 있다.
스테이트풀셋(StatefulSet)
- 컨테이너 어플리케이션은 기본적으로 stateless로, 상태를 갖지 않는 포드를 여러 개 움직이게 하기 위한 것이다.
- 앞에서 설명한 리플리카셋은 이름이나 IP 주소 등이 랜덤으로 할당된다. 또 스케일 다운시에 정지될 포드가 랜덤으로 선택된다.
- 하지만 데이터베이스와 같이 영구 데이터와 연계되는 경우에서는 상태를 유지할 필요가 있다. 이 스테이트풀한 컨테이너 어플리케이션을 실행하기 위한 리소스가 스테이트풀셋이다.
- 스테이트풀셋은 리플리카셋과 달리 포드의 고유성을 보증해 준다.
완벽한 IT 인프라 구축의 자동화를 위한 Kubernetes(쿠버네티스) - Asa Shiho 지음 https://dewble.com/book/kubernetes-with-azure/
댓글남기기