본문 바로가기
IT 끄적이기

쿠버네티스(k8s) 학습하기 - 클러스터란?

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

1. 클러스터(Cluster)란?

클러스터의 정의

  • 쿠버네티스에서 클러스터는 컨테이너화된 애플리케이션을 실행하기 위한 컴퓨터들의 그룹입니다.
  • 클러스터는 여러 대의 물리적 서버나 가상 머신으로 구성되며, 마스터 노드와 워커 노드로 이루어져 있습니다.

클러스터의 구성 요소

1. 마스터 노드(Master Node):

  • 클러스터를 관리하고 제어하는 역할.
  • 주요 컴포넌트:
    • API 서버 (kube-apiserver): 쿠버네티스와 사용자가 소통하는 인터페이스.
    • 컨트롤러 매니저 (kube-controller-manager): 클러스터 상태를 유지하고 관리.
    • 스케줄러 (kube-scheduler): Pod를 적절한 워커 노드에 할당.
    • etcd: 클러스터 상태와 설정 데이터를 저장하는 분산 데이터베이스.

2. 워커 노드(Worker Node):

  • 실제로 애플리케이션(Pod)을 실행하는 컴퓨터.
  • 주요 컴포넌트:
    • Kubelet: 각 노드에서 Pod를 관리하는 에이전트.
    • Kube-proxy: 네트워킹 및 서비스 라우팅을 관리.
    • 컨테이너 런타임: Docker, containerd 등 컨테이너를 실행하는 도구.

클러스터의 역할

  • 리소스 관리: CPU, 메모리, 스토리지 등의 리소스를 효율적으로 사용.
  • 확장성: 워커 노드를 추가하여 애플리케이션을 쉽게 확장 가능.
  • 자동화: Pod 배포, 스케일링, 복구를 자동으로 처리.
  • 네트워킹: 클러스터 내 모든 노드와 Pod가 서로 통신 가능.

2. 포드(Pod)란?

포드의 정의

  • 쿠버네티스에서 가장 작은 배포 단위로, 컨테이너의 집합입니다.
  • 보통 하나의 포드는 하나의 컨테이너만 포함하지만, 필요에 따라 여러 컨테이너를 포함할 수도 있습니다.

포드의 특징

  1. 컨테이너의 논리적 그룹:
    • 포드는 컨테이너를 함께 묶고, 이 컨테이너들은 하나의 네트워크 주소(IP)를 공유합니다.
    • 여러 컨테이너가 같은 스토리지와 네트워크를 공유하며 긴밀히 협력.
  2. 일시적 특성:
    • 포드는 언제든지 삭제되고 다시 생성될 수 있습니다.
    • 포드의 IP 주소는 재생성 시 변경될 수 있으므로 **서비스(Service)**를 통해 관리.
  3. 네트워킹:
    • 포드는 클러스터 내 다른 포드와 통신이 가능합니다.
    • 기본적으로 클러스터 내 모든 포드는 서로 통신할 수 있습니다.

포드의 사용 사례

  • 단일 컨테이너 포드:
    • 가장 일반적인 사용 방식.
    • 예: Nginx 웹 서버를 실행하는 컨테이너 1개.
  • 멀티 컨테이너 포드:
    • 서로 협력하는 두 개 이상의 컨테이너를 포함.
    • 예: 하나의 컨테이너는 애플리케이션 서버를 실행하고, 다른 컨테이너는 로그를 수집.

포드의 구성

1. 컨테이너(Container)

  • 애플리케이션 코드와 실행 환경.
  • Docker, containerd 등의 컨테이너 런타임에서 실행됩니다.

2. 네트워크

  • 포드 내의 모든 컨테이너는 하나의 IP 주소를 공유.
  • 같은 포드 내 컨테이너는 **localhost**를 통해 서로 통신.

3. 스토리지

  • 포드 내 모든 컨테이너가 공유하는 **볼륨(Volume)**을 통해 데이터를 저장.

3. 클러스터와 포드의 관계

개념 역할

클러스터 포드를 실행하고 관리하는 전체 인프라. 클러스터는 여러 노드로 구성됩니다.
포드 클러스터 내에서 애플리케이션의 실행 단위. 컨테이너를 포함하며, 클러스터에 의해 배포되고 관리됩니다.

4. 비유로 이해하기

  • 클러스터: 회사(전체 조직).
    • 마스터 노드: CEO (클러스터의 모든 운영을 관리).
    • 워커 노드: 직원들(작업을 실제로 수행).
  • 포드: 프로젝트(일의 단위).
    • 컨테이너: 프로젝트 내에서 담당하는 개별 팀원.

5. 정리

  • 클러스터: 쿠버네티스 환경 전체를 관리하는 인프라.
  • 포드: 애플리케이션의 실행 단위로, 하나 이상의 컨테이너를 포함.

6. 클러스터의 수

  • 클러스터는 여러 개를 운영할 수 있습니다.
    • 각 클러스터는 독립적으로 운영되며, 서로 다른 목적(개발, 테스트, 운영)을 위해 별도로 구성할 수 있습니다.
    • 예를 들어, "개발 환경 클러스터", "테스트 환경 클러스터", "운영 환경 클러스터"로 나누어 관리할 수 있습니다.

7. 마스터 노드의 수

  • 마스터 노드는 기본적으로 1개 이상 존재할 수 있습니다.
    • 단일 마스터 노드: 소규모 테스트나 개발 환경에서는 마스터 노드 1개만으로 충분합니다.
    • 다중 마스터 노드: 운영 환경에서는 마스터 노드를 3개 이상 구성하여 **고가용성(High Availability)**을 보장합니다.
      • 예: 마스터 노드 하나가 다운되더라도 다른 노드가 클러스터를 계속 관리할 수 있습니다.
    • 마스터 노드를 구성할 때는 **홀수 개수(3, 5, 7)**로 설정하여 etcd 데이터베이스의 쿼럼(Quorum)을 유지합니다.

8. 워커 노드의 수

  • 워커 노드는 제한 없이 여러 개를 추가할 수 있습니다.
    • 워커 노드는 클러스터의 규모와 애플리케이션 부하(트래픽, 처리량)에 따라 동적으로 늘릴 수 있습니다.
    • 쿠버네티스는 **오토스케일링(Auto Scaling)**을 지원하므로, 부하에 따라 워커 노드를 자동으로 추가하거나 제거할 수 있습니다.

예:

  • 소규모 테스트 환경:
    • 1개의 마스터 노드 + 1개의 워커 노드.
  • 중간 규모:
    • 3개의 마스터 노드 + 10개의 워커 노드.
  • 대규모 환경:
    • 5개의 마스터 노드 + 수백 개의 워커 노드.

정리

요소 수 제한 설명

클러스터 여러 개 가능 각 클러스터는 독립적으로 구성 가능. 개발, 테스트, 운영 환경별로 나눠 운영.
마스터 노드 1개 이상 가능 (운영 환경에서는 3개 이상 권장) 단일 노드로 구성 가능하나, 고가용성을 위해 다중 노드 구성 추천. 홀수 개수로 구성하여 etcd 데이터베이스 안정성 유지.
워커 노드 제한 없음 클러스터의 규모에 따라 동적으로 추가 가능. 처리량에 따라 스케일링 가능.
728x90