ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커와 쿠버네티스 - 노드와 파드, 컨테이너를 알아보자
    개발 일지 2025. 5. 8. 18:54

     

     

    앞 포스팅에 이어서 도커, 오케스트레이션, 쿠버네티스 개념을 한번 살펴보자.

    개념 설명 주요 특징 
    컨테이너 (Container) 독립적인 애플리케이션 실행 단위 필요한 것만 담아서 격리된 환경에서 실행하는 단위라고 말할 수 있음 가볍고 빠르다.
    호스트 OS 위에서 실행되기 때문에 부팅도 빠르다.
    독립적이기 때문에 다른 애플리케이션에 영향을 주지 않는다. 
    도커 (Docker) 컨테이너를 만들고 실행하는 도구 

    애플리케이션 과 실행환경을 함께 구성 (이미지) 
    만들어진 이미지에서 실행되는 인스턴스가 바로 컨테이너라고 말할 수 있다. 
    오케스트레이션 (Orchestration) 컨테이너 여러 개를 효율적으로 자동 관리하는 시스템 컨테이너가 많아지면 수작업으로 관리가 불가능하다. 
    서비스 관리, 오토스케일링, 배포 등 자동관리가 가능하다.
    쿠버네티스 (Kubernetes) 오케스트레이션 도구 중 대표   

     

     

     

     

    Docker 도커 

    Golang Docker Image

    도커는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼
    소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징 하며, 이 컨테이너에는 라이브러리 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것을 포함 
    - https://aws.amazon.com/ko/docker/ 참조 -

     

     

    Docker 의 핵심을 몇 가지 적어본다면, 

     

    Docker Daemon 

    백그라운드에서 동작하며, 컨테이너 생성/관리/삭제 등의 다양한 요청을 처리한다.

     

    Docker CLI

    개발자들이 아래 와 같은 명령어를 통해 Daemon에 전달한다. 

    docker build
    docker run

     

    이미지 Registry 

    AWS ECR, Docker Hub 등 컨테이너 이미지를 보관한다.

    이미지에는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있다. 

     

     

    컨테이너 이미지를 구성해두면 한 서버에 여러 개의 컨테이너를 실행할 수 있다. 

    그렇다면 여기서 또 관리의 개념이 나오겠지..? 그것이 바로 오케스트레이션 이다!

     


     

    오케스트레이션의 대표적인 쿠버네티스를 한번 보자 

     

    Kubernetes 쿠버네티스 

     

     

     

    위에서도 얘기했지만, 쿠버네티스 란?

    컨테이너화 된 애플리케이션의 대규모 배포, 스케일링, 관리를 편하게 해 줄 수 있는 컨테이너 오케스트레이션 (Container Orchestration) 도구이다. 

     

    쿠버네티스가 좋다는 건 알겠다.. 

    내 경험으로는 AWS ECS를 통해 컨테이너 서비스는 운영해봤는데, EKS는 써보지 못해서 

    그래서 어떤 부분이? 얼마나 더? 어떤 상황에서? 적절한 건지 궁금했다. 

     

    gpt 찬스 

    ECS와 EKS 적합한 예시를 물어봤다..! 

    언제 ECS 를 사용하면 좋을까?

     

    그렇다. 

    결국 개발하는 서비스들이 AWS 들의 ALB, CloudWatch 등 이용하면서 

    간단하면서 빠르게 컨테이너 서비스를 띄우고 싶을 때 이용하면 좋다고 한다.

     

     

    그렇다면 EKS는? 쿠버네티스의 생태계의 모든 파워를 활용하는 서비스라고 볼 수 있다.

    서비스가 크게 성장하고 점점 복잡해질수록 전환을 고려한다고 한다. 

    언제 EKS 를 사용하면 좋을까?

     

     

     

    이참에 쿠버네티스를 파 해져보자 

    처음 봤을 때 이해가 정말 안 되었다.. 개념부터가 어려움 ^_^ 

    출처: https://kubernetes.io/ko/docs/concepts/overview/components/

     

    이해하기 위한 흔적 .. 이해하고 다시 공식 사진을 보니 이해가 쪼금 됩니당 흑흑

     

     

     

    클러스터 (Cluster)

    클러스터는 컨테이너화 된 애플리케이션을 실행하는 노드 라고 하는 Woker 머신의 집합.

    모든 클러스터는 최소 한 개의 worker Node를 가진다.

     

    일단 개념을 적고 나니, 여기서 노드라는 개념부터 궁금해진다. 

     

    노드 (Node)

    노드란, 클러스터 내 가상 서버. 

    즉 컴퓨팅 엔진 단위라고 볼 수 있다. 클러스터 다음으로 큰 단위이며 Master Node와 Woker Node로 나뉜다. 

    공식 홈페이지에서는 '컨트롤 플레인 컴포넌트'라는 용어가 나오는데, 즉 Master Node를 뜻한다. 

     

    Master Node는 쿠버네티스 전체 시스템을 관리 및 통제하는 중요한 역할을 한다.

    Master Node 가 죽으면 더 이상 클러스터를 관리할 필요가 없기 때문에, 일반적으로 3개 정도의 Master Node를 띄워서 관리한다. 

    Woker Node의 경우 배포하고자 하는 애플리케이션을 실행하고, 네트워크 및 스토리지를 관리한다.  

     

    파드 (Pod)

    파드는 원래 고래의 떼를 일컫는 용어이고, Docker 로고에 쓰인 이미지를 따서 명칭이 붙었다고 한다. 

    파드는 컨테이너를 실행하는 가장 기본단위이다. 

    간단히 말해서 여러 컨테이너들의 집합이라고 볼 수 있다.! 

    파드 내 컨테이너들은 하나의 애플리케이션의 구성요소로 묶여있기 때문에, 함께 배포되며 확장된다. 

     

     

    간단히 구성하는 예를 들어서 이야기한다면, 아래처럼 생각해 볼 수 있다. 

    Container A  : Django  
    Container B  : Nginx  
    Pod1 : Django + Nginx 컨테이너를 포함한 최소 배포 단위  
    Worker Node  : Pod1이 실제로 실행되는 물리/VM 인프라  
    Master Node  : 컨트롤 플레인(Control Plane)을 호스팅 하며
                    - API Server (kubectl 요청 수신)  
                    - Scheduler (Pod 스케줄 결정)  
                    - Controller Manager (Replica 수 유지, HPA 실행 등)  
                    - etcd (클러스터 상태 저장)  
                    - (필요 시) Cluster Autoscaler 연동  
                  → 스케줄링·오토스케일링·클러스터 상태 관리를 담당

     

     

    정리해 보면 

    가장 작은 단위인 Container - Pod - Node - Cluster 구조로 구성되어 있다.  

    이 외에도 알아야 할 내용들이 너무너무 많은데, 다음 포스팅에서 천천히 다뤄봐야겠다.

     

Designed by Tistory.