G코딩 스토리

쿠버네티스 핵심 구성요소 총정리 🚀 본문

Develop/K8S

쿠버네티스 핵심 구성요소 총정리 🚀

Jiione 2025. 3. 19. 05:02

쿠버네티스 핵심 구성요소 총정리 🚀

개요

이 글에서는 쿠버네티스 클러스터를 구성하는 다양한 컴포넌트들에 대해 알아봅니다.

  • 컨트롤 플레인워커 노드의 구성요소들을 소개
  • 각 컴포넌트의 역할과 동작 방식 설명
  • 예시와 비유를 통해 이해 돕기

목차

  1. 쿠버네티스란?
  2. 컨트롤 플레인 구성요소
    • kube-apiserver
    • etcd
    • kube-scheduler
    • kube-controller-manager
    • cloud-controller-manager
  3. 워커 노드 구성요소
    • kubelet
    • kube-proxy
    • 컨테이너 런타임
  4. 마무리하며

쿠버네티스란? 🤔

쿠버네티스는 컨테이너화된 애플리케이션을 쉽고 효율적으로 배포, 확장 및 관리할 수 있게 도와주는 오케스트레이션 플랫폼입니다. 클러스터 내부에서는 다양한 구성요소들이 서로 협력하며 애플리케이션의 안정적인 운영을 보장합니다.


컨트롤 플레인 구성요소

1. kube-apiserver 📡

역할:

  • 클러스터의 “프런트 데스크” 역할을 하며, 모든 요청(예: kubectl 명령어)을 받아들입니다.
  • 클라이언트와 다른 컴포넌트들 간의 중개자 역할을 수행합니다.

예시:
kubectl apply -f deployment.yaml 명령어를 입력하면, 요청이 kube-apiserver를 거쳐 클러스터 전체에 반영됩니다.


2. etcd 💾

역할:

  • 클러스터의 모든 상태 정보를 영구적으로 저장하는 분산형 키-값 저장소입니다.
  • 애플리케이션의 설정, 파드 상태 등 중요한 데이터를 보관합니다.

예시:
파드가 생성되거나 업데이트되면 그 정보가 etcd에 기록되어, 클러스터 재시작 시에도 정보를 복원할 수 있습니다.


3. kube-scheduler 🔍

역할:

  • 아직 특정 노드에 할당되지 않은 파드를 적절한 워커 노드에 배정하는 역할을 합니다.

동작 방식:

  • 각 노드의 리소스 상황과 정책(예: 라벨, 친화성)을 고려하여 파드에 최적의 노드를 선택합니다.

예시:
새로운 웹 애플리케이션 파드를 생성하면, “이 노드에 충분한 CPU와 메모리가 있으니 여기에 배치하자”라고 결정해 파드를 할당합니다.


4. kube-controller-manager 🔧

역할:

  • 다양한 컨트롤러들을 실행하며 클러스터의 원하는 상태와 실제 상태가 일치하도록 지속적으로 관리합니다.

주요 컨트롤러:

  • 노드 컨트롤러: 노드의 상태 감시
  • ReplicaSet 컨트롤러: 지정한 수의 파드가 항상 실행되도록 유지
  • Deployment 컨트롤러: 애플리케이션 배포 및 업데이트 관리

예시:
만약 파드 수가 줄어들면, ReplicaSet 컨트롤러가 부족한 파드를 자동으로 생성해 설정된 수를 유지합니다.


5. cloud-controller-manager ☁️

역할:

  • 클라우드 환경과의 연동 작업을 담당하며, 클라우드 제공자(AWS, GCP, Azure 등)와의 통합 기능을 관리합니다.

예시:
클라우드에서 새로운 노드를 추가할 때, cloud-controller-manager가 해당 노드를 클라우드 인프라와 연동시켜 줍니다.


워커 노드 구성요소

1. kubelet 🖥️

역할:

  • 각 워커 노드에서 실행되는 에이전트로, 파드와 컨테이너를 실제로 실행하고 그 상태를 모니터링합니다.

예시:
웹 애플리케이션 파드가 실행 중인데, 컨테이너에 문제가 생기면 kubelet이 이를 감지하고 자동으로 재시작하는 등의 조치를 취합니다.


2. kube-proxy 🔀

역할:

  • 노드 내에서 네트워크 트래픽을 관리하며, 서비스 요청이 올바른 파드로 전달되도록 라우팅 역할을 합니다.

예시:
여러 파드에 분산된 웹 서비스의 경우, kube-proxy가 클라이언트 요청을 적절한 파드로 분배해 로드 밸런싱을 수행합니다.


3. 컨테이너 런타임 🐳

역할:

  • 실제 컨테이너를 다운로드, 실행, 관리하는 소프트웨어입니다.

예시:
Docker나 containerd 같은 런타임이 애플리케이션 이미지를 실행하여 각 컨테이너에서 애플리케이션이 정상적으로 동작하게 합니다.


마무리하며 ✨

쿠버네티스는 다양한 구성요소들이 유기적으로 협력해 클러스터의 상태를 안정적으로 유지하고, 컨테이너화된 애플리케이션을 효율적으로 관리합니다.

  • 컨트롤 플레인은 클러스터의 중앙 관리자로서 모든 요청과 상태 정보를 처리하고,
  • 워커 노드는 실제 애플리케이션이 실행되는 현장 역할을 담당합니다.

이 글을 통해 여러분이 쿠버네티스의 각 컴포넌트에 대해 더 깊게 이해하고, 실제 운영 환경에서 어떤 역할을 하는지 파악하는 데 도움이 되었기를 바랍니다. 앞으로 더 다양한 주제로 여러분과 소통할 수 있길 기대합니다! 👍