-
도커와 쿠버네티스 - 노드와 파드, 컨테이너를 알아보자개발 일지 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 구조로 구성되어 있다.
이 외에도 알아야 할 내용들이 너무너무 많은데, 다음 포스팅에서 천천히 다뤄봐야겠다.
'개발 일지' 카테고리의 다른 글
AWS ECS(Elastic Container Service) 살펴보기(Cluster, Service,Task) (0) 2025.05.14 가상머신(VM) 과 컨테이너 차이 (0) 2025.05.02 Devops, IaC 그리고 Terraform (0) 2025.04.30 AWS IAM 관리 너무 중요해..! (0) 2025.04.29