Skip to main content

Kubernetes와 OVA 구성에 대한 종합 정리


1. Kubernetes란?

Kubernetes는 애플리케이션을 효율적으로 배포하고 관리할 수 있는 오픈소스 시스템입니다. 여러 서버를 하나로 묶어 작업을 자동으로 분산 처리할 수 있게 합니다.


1.1 Kubernetes의 구성 요소

  1. 클러스터(Cluster):

    • Kubernetes의 전체 시스템. 여러 대의 서버가 하나의 팀처럼 동작합니다.
  2. 노드(Node):

    • 클러스터를 구성하는 기본 단위.
    • 물리 서버 또는 가상 머신(VM)일 수 있습니다.
    • 역할:
      • 마스터 노드: 클러스터를 관리하고 통제.
      • 워커 노드: 실제로 작업을 처리.
  3. 파드(Pod):

    • Kubernetes에서 작업을 실행하는 가장 작은 단위.
    • 하나 이상의 컨테이너를 포함합니다.
    • 같은 파드 내의 컨테이너는 네트워크와 스토리지를 공유합니다.
  4. 컨테이너(Container):

    • 애플리케이션이 실행되는 환경입니다.
    • Docker, Containerd 등으로 실행됩니다.

1.2 노드의 역할

  1. 마스터 노드:

    • 클러스터의 두뇌 역할.
    • 주요 역할:
      • API 서버: 클러스터와 사용자 간의 인터페이스.
      • 스케줄러: 파드를 적절한 노드에 배치.
      • 컨트롤러: 클러스터 상태를 유지 및 복구.
      • etcd: 클러스터 상태 데이터를 저장.
  2. 워커 노드:

    • 파드를 실행하며 실제 애플리케이션 작업을 처리.
  3. 마스터 노드가 워커 노드 역할도 가능:

    • 설정을 변경하면 마스터 노드가 워커 노드 역할을 겸할 수 있습니다.

1.3 마스터 노드의 고가용성(HA)

  1. HA(High Availability):

    • 마스터 노드를 3대 이상 구성하면, 1대가 고장 나도 나머지 노드가 작동합니다.
    • 클러스터가 계속 작동하려면 3대 중 최소 2대가 살아 있어야 합니다.
  2. 장애 복구:

    • Kubernetes는 과반수 원칙(Quorum)을 사용해 데이터 일관성과 가용성을 유지합니다.

2. OVA란?

2.1 OVA(Open Virtual Appliance)

  • OVA는 가상 머신(VM)을 쉽게 생성할 수 있도록 설정된 템플릿 파일입니다.
  • 운영체제와 애플리케이션 설정이 모두 포함되어 있어 간단하게 배포 가능합니다.
  • VMware, VirtualBox 등 가상화 소프트웨어에서 실행됩니다.

2.2 OVA와 Kubernetes의 관계

  1. OVA로 생성된 VM이 Kubernetes의 노드(Node) 역할을 합니다:

    • VM 1대 = Kubernetes의 마스터 또는 워커 노드.
  2. 물리 서버에서 OVA로 Kubernetes 클러스터를 구성:

    • 물리 서버 1대에서 여러 VM 실행.
    • 또는 물리 서버 여러 대에 각각 OVA VM 배포.

2.3 OVA 구성 사례

  1. 마스터 노드 3대 구성:

    • OVA로 3개의 VM을 만들고, 각 VM을 마스터 노드로 설정.
    • 고가용성(HA)을 보장.
  2. 마스터 + 워커 겸용:

    • OVA로 만든 VM이 마스터와 워커 역할을 동시에 수행하도록 설정.
  3. 마스터 3대 + 워커 2대:

    • OVA로 5개의 VM 생성:
      • 3개는 마스터 노드.
      • 2개는 워커 노드.

3. 자주 묻는 질문

3.1 OVA 서버란?

  • OVA 서버는 가상화된 VM 서버입니다.
  • 물리 서버 위에서 실행되며, Kubernetes의 노드(Node) 역할을 합니다.

3.2 Kubernetes 클러스터 구성

  1. 마스터 노드 3대 + 워커 노드 2대:

    • VM 5대 필요.
    • 마스터는 클러스터 관리, 워커는 파드를 실행.
  2. 마스터만 3대 구성:

    • 마스터 노드가 워커 역할도 겸할 수 있습니다.
  3. 모든 OVA를 마스터로만 구성하면?

    • 고가용성 보장.
    • 하지만 워커 노드가 없으면 작업 부하를 처리하기 어렵습니다.

3.3 마스터 노드에서 작업 실행

  • 기본적으로 마스터 노드는 작업을 실행하지 않습니다.
  • 마스터 노드에서 작업을 실행하려면 NoSchedule 태인트를 제거해야 합니다:
    kubectl taint nodes <master-node-name> node-role.kubernetes.io/master:NoSchedule-

4. 추천 구성

4.1 운영 환경

  • 마스터 노드 3대:

    • 클러스터 관리 전담.
    • 고가용성을 보장하기 위해 마스터 노드는 워커 역할을 하지 않도록 유지.
    • 클러스터의 안정성을 확보.
  • 워커 노드 2대 이상:

    • 애플리케이션 실행 및 작업 처리 전담.
    • 작업 부하를 분산하여 병렬 처리 가능.

4.2 테스트/소규모 환경

  • 마스터 노드 3대 중 일부를 워커 역할로 활용.

    • 예: 2대는 마스터+워커 겸용, 1대는 관리 전담.
    • 자원 절약 및 소규모 클러스터 환경에서 효율적인 구성.
  • 마스터 노드에서 워커 역할을 허용하려면:

    • NoSchedule 태인트를 제거하여 파드(Pod)를 실행 가능하게 설정:
      kubectl taint nodes <master-node-name> node-role.kubernetes.io/master:NoSchedule-
    • 이를 통해 자원을 더욱 효율적으로 활용 가능.

5. Kubernetes 구성 요약

클러스터
├─ 마스터 노드 3대
│ ├─ 클러스터 관리 (API 서버, 스케줄러 등)
│ ├─ 일부 노드는 워커 역할 겸할 수 있음
├─ 워커 노드 2대
├─ 애플리케이션 작업 처리