Kubernetes 내부 아키텍처와 구성 요소 정리

날아올라돼지야·2024년 9월 1일
0


Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리할 수 있는 강력한 오픈 소스 플랫폼입니다. Kubernetes 클러스터는 여러 서버 또는 가상 머신이 함께 작동하여 사용자가 원하는 결과를 제공하는 환경입니다. Kubernetes의 핵심 구성 요소와 그 역할을 이해하는 것은 매우 중요합니다.

1. Kubernetes 클러스터의 기본 구조

  • 클러스터: Kubernetes 클러스터는 여러 노드(Node)로 구성되며, 이 노드들은 마스터 노드와 워커 노드로 구분됩니다.
    • 마스터 노드 (Control Plane): 클러스터를 제어하고 관리하는 노드입니다.
    • 워커 노드: 실제 애플리케이션 컨테이너가 실행되는 노드입니다.

2. 마스터 노드의 구성 요소

  • Kube API 서버: Kubernetes의 중심 API 서버로, 외부에서 클러스터와 상호 작용할 수 있는 인터페이스를 제공합니다. kubectl CLI 또는 관리 UI를 통해 명령을 전달받아 클러스터의 상태를 제어합니다.

  • 스케줄러 (Scheduler): API 서버에서 전달된 요청을 바탕으로, 어떤 워커 노드에 컨테이너를 배포할지 결정합니다. 워커 노드의 상태를 고려해 최적의 노드를 선택합니다.

  • 컨트롤러 매니저 (Controller Manager): 클러스터의 상태를 지속적으로 모니터링하고, 원하는 상태(Desired State)를 유지합니다. 예를 들어, 컨테이너가 문제를 일으킬 경우 이를 감지하고 새로운 컨테이너를 생성합니다.

  • etcd: 클러스터의 모든 데이터를 저장하는 분산 키-값 저장소입니다. Kubernetes 클러스터의 브레인(Brain)으로, 클러스터의 모든 상태 정보가 여기에 저장됩니다.

3. 워커 노드의 구성 요소

  • Kubelet: 각 워커 노드에 실행되는 에이전트로, 마스터 노드와 통신하여 애플리케이션 컨테이너를 배포하고 관리합니다.

  • 컨테이너 런타임 (Container Runtime): Docker와 같은 컨테이너를 실행하는 데 필요한 런타임 환경입니다. 이는 워커 노드에서 컨테이너를 실행하고 관리하는 역할을 합니다.

  • 파드 (Pod): Kubernetes에서 가장 작은 배포 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다. 보통 하나의 파드에는 하나의 주요 컨테이너가 포함되며, 필요에 따라 보조 컨테이너(Sidecar Pattern)가 추가될 수 있습니다.

  • Kube Proxy: 네트워킹을 담당하며, 각 컨테이너가 외부와 통신할 수 있도록 지원합니다. 또한, 클러스터 내에서의 통신을 관리합니다.

4. Kubernetes의 작동 방식

  • 명령 전달: 사용자는 kubectl CLI 또는 UI를 통해 Kubernetes API 서버에 명령을 전달합니다. 이 명령에는 배포, 확장, 롤아웃 등이 포함될 수 있습니다.

  • 스케줄링 및 배포: API 서버는 스케줄러에게 배포 명령을 전달하며, 스케줄러는 적합한 워커 노드를 선택해 해당 노드에 컨테이너를 배포합니다.

  • 모니터링 및 관리: 컨트롤러 매니저는 클러스터의 상태를 지속적으로 모니터링하고, 필요 시 컨테이너를 추가 생성하거나 교체합니다.

  • 데이터 저장: 모든 클러스터의 상태와 관련된 정보는 etcd에 저장되며, 이를 통해 클러스터가 항상 원하는 상태를 유지할 수 있도록 보장합니다.

정리

Kubernetes의 마스터 노드와 워커 노드는 각각 클러스터의 제어 및 애플리케이션 배포를 담당하는 중요한 역할을 합니다. 각 구성 요소는 클러스터가 안정적으로 작동하고, 애플리케이션이 자동으로 관리될 수 있도록 돕습니다. 이러한 내부 구조를 이해하는 것은 Kubernetes를 효과적으로 사용하는 데 필수적입니다.

이제 실제 Kubernetes 클러스터를 구축하고, 마이크로서비스를 배포하는 과정을 통해 이론을 실습으로 확인할 수 있습니다.

profile
무슨 생각하며 사니

0개의 댓글