본문 바로가기
IT 끄적이기

쿠버네티스(k8s) 학습하기 - 쿠버네티스의 구조

by 미르아 2024. 12. 27.
728x90

1. 클러스터 → 노드 → 포드 구조

(1) 클러스터

  • 쿠버네티스의 가장 상위 개념으로, 하나 이상의 노드를 포함합니다.
  • 클러스터는 전체 시스템을 관리하며, 워크로드를 적절한 노드로 배포하고 노드 간 통신을 조율합니다.
  • 클러스터는 마스터 노드와 워커 노드로 나뉩니다:
    • 마스터 노드: 클러스터를 관리(스케줄링, 상태 조정, API 제공).
    • 워커 노드: 실제 애플리케이션을 실행.

(2) 노드 (Node)

  • 클러스터 내에서 작업을 실행하는 단위입니다.
  • 물리적 서버나 가상 머신으로 구성되며, 각 노드에는 쿠버네티스 에이전트(kubelet)가 실행됩니다.
  • 노드는 여러 개의 **포드(Pod)**를 실행할 수 있습니다.

(3) 포드 (Pod)

  • 노드 내에서 실행되는 가장 작은 배포 단위입니다.
  • 보통 하나의 애플리케이션 컨테이너를 포함하며, 여러 컨테이너를 포함할 수도 있습니다.
  • 포드는 IP 주소, 네트워크, 스토리지를 공유합니다.

(4) 컨테이너 (Container)

  • 포드 내에서 실제로 애플리케이션을 실행하는 단위입니다.
  • Docker, containerd 등의 컨테이너 런타임에서 실행됩니다.

2. 계층 구조

다음과 같은 계층으로 이해할 수 있습니다:

  1. 클러스터
    • 노드들을 관리하고 애플리케이션 배포를 조율하는 단위.
  2. 노드
    • 클러스터 내에서 워크로드를 처리하는 물리적/가상 머신.
    • 각 노드는 여러 포드를 실행할 수 있습니다.
  3. 포드
    • 하나 이상의 컨테이너를 실행하는 논리적 단위.
    • 포드는 스케줄링 가능한 기본 단위입니다.
  4. 컨테이너
    • 포드 내에서 애플리케이션 코드와 실행 환경을 포함.
    • 가장 실제적인 실행 단위.

3. 비유로 이해하기

쿠버네티스 구조를 회사 조직에 비유하면:

  • 클러스터: 회사 (전체 조직)
  • 노드: 부서 (각 부서는 작업을 수행)
  • 포드: 팀 (부서 내에서 작업하는 팀)
  • 컨테이너: 팀원이 맡은 개별 작업

4. 실제 구성 예시

아래는 간단한 구조를 YAML 코드로 설명한 예입니다:

클러스터

  • Minikube 같은 도구를 사용하여 쿠버네티스 클러스터를 생성합니다.

노드

  • 클러스터 내에 여러 워커 노드가 있습니다.
  • 명령어로 확인 가능:
  • kubectl get nodes

포드

  • 포드를 실행하여 애플리케이션을 배포합니다.
  • 예: Nginx 서버를 포드로 실행.
  • apiVersion: v1 kind: Pod metadata: name: nginx-pod spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80

5. 노드와 포드의 관계

  • 한 노드는 여러 개의 포드를 실행할 수 있습니다.
  • 포드가 많아져 노드의 리소스가 부족하면, 새로운 노드에 포드가 배포됩니다.

6. 전체 그림

plaintext
코드 복사
클러스터
 ├── 노드 1
 │    ├── 포드 A (컨테이너 1)
 │    └── 포드 B (컨테이너 1, 컨테이너 2)
 ├── 노드 2
 │    └── 포드 C (컨테이너 1)
 └── 노드 3
      ├── 포드 D (컨테이너 1)
      └── 포드 E (컨테이너 1, 컨테이너 2)

7. 정리

  1. 클러스터: 노드들을 관리하는 상위 개념.
  2. 노드: 클러스터의 물리적/가상 머신.
  3. 포드: 노드에서 실행되는 애플리케이션 단위.
  4. 컨테이너: 포드 내부의 실행 환경.
728x90