쿠버네티스

쿠버네티스 개념 정리 - 1

코딩질문자 2024. 12. 7. 17:49
728x90

쿠버네티스(Kubernetes)의 주요 구성 요소는 각각의 역할을 통해 클러스터의 상태를 관리하고 워크로드를 실행하는 데 필수적인 기능을 수행합니다. 아래에 각 구성 요소의 역할을 설명합니다.


1. etcd

  • 역할:
    • 쿠버네티스 클러스터의 키-값 저장소.
    • 모든 클러스터 데이터를 저장하며, 클러스터의 상태와 설정 정보를 관리.
  • 특징:
    • 분산형 고가용성 데이터 저장소.
    • 클러스터 구성, 시크릿, 컨피그맵 등과 같은 모든 상태 데이터가 저장됨.
  • 사용 예:
    • 클러스터 복구 시 필요한 데이터를 제공.
    • API 서버가 상태 정보를 읽고 쓰는 데 사용.

2. kube-scheduler

  • 역할:
    • 새롭게 생성된 Pod를 적절한 **노드(Node)**에 스케줄링.
  • 특징:
    • 리소스 요구사항(CPU, 메모리), 노드의 리소스 사용량, 태인트 및 톨러레이션, affinity/anti-affinity 규칙 등을 고려하여 스케줄링.
  • 작동 방식:
    1. Pending 상태의 Pod를 탐색.
    2. Pod를 실행할 수 있는 최적의 노드를 선택.
    3. 선택된 노드에 Pod를 할당.

3. node-controller

  • 역할:
    • 노드의 상태를 관리하고 모니터링.
  • 특징:
    • 노드의 등록 및 삭제를 처리.
    • 일정 시간 동안 노드에서 응답이 없으면 해당 노드를 비정상 상태로 표시.
    • 노드 상태에 따라 Pod를 재스케줄링하거나 다른 노드로 이동.

4. replication-controller

  • 역할:
    • 특정 Pod가 지정된 개수만큼 항상 실행되도록 보장.
  • 특징:
    • Pod의 수를 모니터링하고, 부족하면 새로 생성하거나, 초과하면 삭제.
    • ReplicaSet이 ReplicationController의 발전된 버전으로 사용됨.
  • 사용 예:
    • 웹 서버 Pod가 항상 3개 이상 실행되도록 보장.

5. controller-manager

  • 역할:
    • 다양한 컨트롤러(리소스를 관리하는 로직)를 실행하고 관리.
  • 특징:
    • node-controller, replication-controller, endpoint-controller, service-account-controller 등 여러 컨트롤러가 이 구성 요소에 포함.
    • 모든 컨트롤러가 단일 바이너리로 실행.
  • 예시 컨트롤러:
    • Replication Controller: Pod 개수를 관리.
    • Node Controller: 노드 상태를 관리.
    • Endpoint Controller: 서비스와 Pod 간의 연결 정보를 관리.

6. kube-apiserver

  • 역할:
    • 쿠버네티스 클러스터의 중앙 통신 허브.
    • 사용자, 클러스터 내부 컴포넌트, 외부 시스템이 클러스터와 상호작용하는 API를 제공.
  • 특징:
    • 모든 요청을 인증하고 승인한 뒤 etcd와 통신하여 상태를 업데이트.
    • 클라이언트가 kubectl 명령어를 통해 요청을 보내는 대상.
  • 핵심 기능:
    • REST API를 통해 클러스터 상태를 읽고 쓰는 인터페이스 제공.

7. kubelet

  • 역할:
    • 각 노드에서 실행되며, API 서버로부터 Pod 스펙을 받아 Pod를 실행하고 상태를 관리.
  • 특징:
    • 컨테이너 런타임(Docker, containerd 등)을 사용하여 컨테이너를 시작 및 중지.
    • Pod 상태를 주기적으로 API 서버에 보고.
  • 사용 예:
    • 새로운 Pod를 생성하고, 컨테이너 상태를 감시.

8. kube-proxy

  • 역할:
    • 클러스터 내부의 네트워킹을 관리하고, 서비스의 트래픽을 올바른 Pod로 라우팅.
  • 특징:
    • 각 노드에 실행되며, 네트워크 규칙(IPTables 또는 IPVS 기반)을 생성.
    • 클러스터 외부에서 들어오는 요청을 서비스의 올바른 엔드포인트로 전달.
  • 사용 예:
    • 서비스(ClusterIP)로 요청이 들어오면 이를 해당 서비스에 연결된 Pod로 라우팅.

요약

컴포넌트역할특징

etcd 클러스터 상태 데이터 저장 키-값 데이터 저장소, 고가용성.
kube-scheduler Pod를 적절한 노드에 스케줄링 리소스 요구사항과 규칙 기반 스케줄링.
node-controller 노드 상태 관리 및 모니터링 노드 등록/삭제 처리, Pod 재스케줄링.
replication-controller Pod 수 보장 Pod 생성/삭제를 통해 안정된 상태 유지.
controller-manager 다양한 컨트롤러 실행 및 관리 복합적인 리소스 관리 기능 포함.
kube-apiserver 클러스터의 중앙 API 허브 클라이언트와 내부 컴포넌트 간의 통신 중재.
kubelet 각 노드에서 Pod 실행 및 관리 컨테이너 상태 보고 및 실행 관리.
kube-proxy 네트워크 라우팅 관리 서비스와 Pod 간의 트래픽 라우팅.

이 구성 요소들은 서로 협력하여 쿠버네티스 클러스터를 안정적이고 효율적으로 관리하는 데 핵심적인 역할을 수행합니다.

728x90