Always-Try(정보보안 및 일상)

AWS - 쿠버네티스 - 2탄 쿠버네티스 용어 정리(컨테이너, 파드, 노드, 워커노드, 워크로드) 본문

AWS

AWS - 쿠버네티스 - 2탄 쿠버네티스 용어 정리(컨테이너, 파드, 노드, 워커노드, 워크로드)

Always-Try 2021. 7. 6. 23:49
https://kubernetes.io/ko/docs/home/ 참고

 

쿠버네티스를 접하다 보면 알쏭달쏭한 용어들이 자주 등장한다. 워커노드 노드 파드 클러스터 등등등등...

영어라서 그런가 사람마다 부르는 것도 조금씩 다르기도 하고, 참 알듯말듯한 용어들이다.

이번 포스팅에는 쿠버네티스를 이해하는데 꼭 필요한 핵심 용어들에 대해 알아보자.

1. 쿠버네티스 다이어그램

그림1. 쿠버네티스 다이어그램

쿠버네티스 공식 홈페이지에 따르면, 쿠버네티스를 배포하면 클러스터가 생성된다. 

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합이며, 모든 클러스터는 최소 한 개의 워커 노드를 가진다.

워커 노드는 애플리케이션의 구성요소인 파드를 관리하며, 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다.

역시 알쏭달쏭하다. 하나씩 알아가보자.

 

2. 컨테이너

그림2. 컨테이너

컨테이너의 사전적 의미는 '반복 사용할 수 있는 내구성을 가진 상자모양의 큰 수송용기'이다. IT에서 말하는 컨테이너도 동일하다. 호스트 OS상에 가상의 격리 공간(컨테이너)를 만들고 App을 작동시키기 위해 필요한 코드, 런타임, 라이브러리 및 필수 설정들을 하나로 모아서 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 

이러한 격리 공간을 컨테이너 이미지하고 하며, 설정 상 이미 실행 중인 컨테이너의 코드를 변경할 수는 없으며 변경하려는 경우 변경 사항이 포함된 새 이미지를 빌드하고, 빌드한 이미지에서 컨테이너를 다시 생성해야 한다.

참고로, 컨테이너 런타임은 컨테이너 실행을 담당하는 S/W 이며, 쿠버네티스는 도커, 컨테이너, CRI-O 등 다양한 컨터에니 런타임을 지원한다.

 

3. 파드

파드(Pod) 는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이며, 하나 이상의 컨테이너의 그룹이다. 이 그룹은 스토리지 및 네트워크를 공유하고, 해당 컨테이너를 구동하는 방식에 대한 명세를 갖는다. 파드 중 일부는 컨테이너에 대한 다음의 자원을 공유할 수도 있다.

  • 볼륨과 같은, 공유 스토리지
  • 클러스터 IP 주소와 같은, 네트워킹
  • 컨테이너 이미지 버전 또는 사용할 특정 포트와 같이, 각 컨테이너가 동작하는 방식에 대한 정보

그림3. 파드

 

파드는 직접 만들 필요는 없으며, 디플로이먼트 또는 잡과 같은 워크로드 리소스를 사용하여 생성한다. 워크로드는 다음 설명에 나온다. 

그리고 파드는 크게 2가지 방식으로 나눌 수 있는데, '단일 컨테이너를 실행하는 파드'와 함께 작용해야 하는 '여러 컨테이너를 실행하는 파드'로 나눌 수 있다. 후자의 경우, 함께 배치된 컨테이너는 하나의 결합된 서비스 단위를 형성한다. 예를 들어, 하나의 컨테이너는 공유 볼륨에 저장된 데이터를 퍼블릭에 제공하는 반면, 별도의 사이드카 컨테이너는 해당 파일을 새로 고치거나 업데이트한다. 파드는 이러한 컨테이너, 스토리지 리소스, 임시 네트워크 ID를 단일 단위로 함께 래핑한다.

* 참고: 사이트카 컨테이너란? (https://arisu1000.tistory.com/27863 에서 발췌)

그림4. 사이드카

 

 

4. 노드, 워커노드

파드는 언제나 노드 상에서 동작한다. 노드는 쿠버네티스에서 워커 머신을 말하며 클러스터에 따라 가상 또는 물리 머신일 수 있다. 각 노드는 마스터에 의해 관리된다. 하나의 노드는 여러 개의 파드를 가질 수 있고, 쿠버네티스 마스터는 클러스터 내 노드를 통해서 파드에 대한 스케쥴링을 자동으로 처리한다.

그림5. 노드

참고로 Kubelet은, 쿠버네티스 마스터와 노드 간 통신을 책임지는 프로세스이며, 하나의 머신 상에서 동작하는 파드와 컨테이너를 관리한다.

여기서 다신 쿠버네티스의 아키텍쳐로 잠시 돌아가자면, 쿠버네티스는 하나의 마스터 노드와 여러대의 워커노드들이 하나의 클러스터를 이루고 있는 구조이다. 마스터 노드란 API를 통해 클러스터 전체를 컨트롤 하는 것이며, 워커노드는 마스터의 명령에 의해 워크로드를 생성하고 서비스하는 컴포넌트이다. 아래 그림의 컨트롤 플레인을 마스터 노드라고 보면되고, 노드를 워커노드라고 보면 된다.

그림6. 쿠버네티스 다이어그램

그렇다면, 워크로드를 생성한다는 것은 무슨 의미인지도 알아보자.

 

5. 워크로드

공식 문서에 따르면 워크로드는 쿠버네티스에서 구동되는 애플리케이션이라고 한다. 역시나 공식 가이드는 한번에 알아듣기 힘들다. 그래서 구글링하다 다음의 블로그에서 아래 내용을 봤는데, 어느정도 이해가 가는 것 같아서 퍼왔다. (https://velog.io/@hanblueblue/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-2.-%EC%9B%8C%ED%81%AC%EB%A1%9C%EB%93%9C-%ED%8C%8C%EB%93%9C)

그림7. 워크로드

AWS, Container Orchestration, EKS, k8s, kubernetes, 노드, 쿠버네티스, 파드

 

Comments