데이터 공부/Kubernetes

쿠버네티스란? - 노드와 파드, 컨테이너 차이를 이해해보자

한소희DE 2022. 3. 22. 00:00

 

 

 

목차

쿠버네티스란

쿠버네티스 구성요소 - 노드

쿠버네티스 구성요소 - 파드

 

 

 


 

 

 

01. 쿠버네티스란

 

도커를 어느 정도 공부하다 보면, 쿠버 네티스에 대해서 많이 들어봤을 것이다.

 

쿠버네티스는 컨테이너 개발에 있어, 컨테이너화된 애플리케이션을 탄력적으로 실행하기 위한 프레임 워크를 말한다.

이는 컨테이너화된 애플리케이션의 로드밸런싱 & 시크릿 관리 등을 원활히 하도록 돕는다.

 

로드 밸런싱(load balancing): 컴퓨터 네트워크 기술의 일종으로 둘 혹은 셋 이상의 중앙처리장치 혹은 저장장치와 같은 컴퓨터 자원들에게 작업을 나누는 것을 뜻함 (동의어: 부하분산)

 

 

 

이는 배포를 원활히 돕는 것뿐만 아니라, 혹여 배포가 잘못되었을 경우 유연한 대처(롤백 등)가 가능하도록 돕는다.

 

예를 들어, 쿠버네티스를 이용하면, 부하가 많아질 때마다 특정 이미지로 빠르게 앱을 여러 개로 배포할 수 있다.

또한 어떠한 인스턴스가 다운됐다고 가정할 경우, 다른 인스턴스가 자동으로 생성되어 수 초 이내에 돌아갈 수 있도록 설정이 가능하다. 부하에 따라 오토스케일 명령 또한 가능하다.

 

 

따라서, 컨테이너 기반 애플리케이션 서비스의 트래픽이 증가하는 등의 확장 혹은 고도화가 진행되는 상황이라면,

쿠버네티스 도입은 진지하게 고민해보아야 한다고 생각한다.

 

 

 

 

 


 

 

02. 쿠버네티스 구성요소 - 노드

 

 

출처: 쿠버네티스 공식 페이지

 

사실 쿠버네티스는 (내 생각에) 다소 복잡한 구조를 지니고 있다.

따라서 구성 요소가 매우 많기에, 모든 것을 일일이 포스팅할 수는 없으리라 판단했다.

순차적으로 세세한 포스팅을 목표로 하기보단, 공부하면서 가장 중요하다고 생각했던 개념 위주로 천천히 풀어나가며 복습할 예정이다.

(만약 k8s의 a to z를 알고 싶다면, 공식 문서를 참조하는 것이 좋겠다.)

 

 

 

 

2-1. 클러스터란

쿠버네티스 내 가장 큰 단위로, 가상 서버들이 속한 클라우드를 뜻한다.

 

쿠버네티스에서 서버는 노드(아래에서 설명)라는 단위로 불리므로, 

클러스터란 마스터노드와 워커노드를 합친 것이라고 해석할 수도 있을 것 같다.

 

 

 

 

 

2-1. 노드(node)란

 

노드란, 클러스터 내 가상 서버 즉, 컴퓨팅 엔진 단위라고 이해하면 되겠다.

 

클러스터 다음으로 큰 단위이며, 마스터 노드워커 노드로 분리돼 있다.

 

  • 마스터 노드: 전체 쿠버네티스 시스템을 관리 및 통제하는 쿠버네티스 컨트롤 플레인을 관장 (위 사진 참고)
  • 워커 노드: 배포하고자 하는 어플리케이션의 실제 실행을 수행

마스터 노드가 죽으면 클러스터를 관리할 노드가 없기에, 일반적으로 3개 정도의 마스터 노드를 띄워 관리하는 것으로 알려져 있으며,

워커 노드도 여러 개 구성할 수 있다.

 

 

 

 


 

 

03. 쿠버네티스 구성요소 - 파드

 

파드란, 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위다.

그리고 이와 동시에, 하나 이상의 컨테이너 그룹을 뜻한다.

 

 

 

처음에 쿠버네티스를 배울 때 이 부분이 헷갈렸는데,

우연히 가비아의 지식인 답변을 보고 개념을 이해할 수 있게 됐다 !

(그 와중에 가비아.. 지식인 열심답변자 등급인거 귀엽다 .. ‧⁺◟( ᵒ̴̶̷̥ ·̫ ᵒ̴̶̷̣ ) )

 

 

 

이 내용을 정리하자면 아래와 같다.

 

 

-> 파드와 컨테이너 개념 정리

    • 컨테이너는 애플리케이션을 말한다. 이는 완전한 어플리케이션의 일부 기능일 수도 있고, 완전한 어플리케이션 그 자체일 수 있다.
    • 만약 컨테이너가 완전한 어플리케이션의 일부 기능이라면?
      • 여러 개의 컨테이너들이 모여 하나의 완전한 어플리케이션을 구성할 것이다.
      • 이때 여러 개의 컨테이너가 모여 하나의 파드가 된다. (그럼 이 파드가 완전한 어플리케이션이 된다.)
    • 만약 컨테이너 1개가 완전한 어플리케이션 기능을 갖추고 있다면?
      • 하나의 컨테이너로도 하나의 파드를 구성할 수 있다.
    • 즉, 파드에 정의된 여러 개의 컨테이너는 하나의 완전한 애플리케이션으로서 동작한다.

 

 

 


 

 

 

 

따라서 정리해보면,

 

쿠버네티스의 크기 단위는 크게

 

클러스터 > 노드 > 파드 > 컨테이너

 

 

 

로 구성 및 분리 돼 있다.

 

 

이 외에도, 쿠버네티스에는 네임스페이스 & 라벨 등 분리 단위가 또 존재하는데, 이는 다음 포스팅에서 천천히 차근차근 다뤄보도록 하겠다.

 

 

 

 

 

 

 

 

해당 포스팅에서 잘못된 부분이 있을 경우, 알려주시면 빠르게 수정 조치 하도록 하겠습니다. 오늘도 읽어주셔서 감사합니다!