Chapter01/Kubernetes

[ Kubernetes ] 클러스터의 관리 및 오케스트레이션

EmmaDev_v 2025. 2. 26. 14:21

 

kube-apiserver

kube-scheduler

kube-controller-manager

 

이 세 가지 컴포넌트는 Kubernetes 클러스터의 관리 및 오케스트레이션을 담당하는 주요 역할을 함.

 

 

kube-apiserver

  • Kubernetes의 API 서버 역할을 하며, 클러스터의 모든 요청을 처리하는 중앙 관리 지점
  • kubectl 명령이나 다른 클러스터 내 외부 시스템에서 들어오는 요청을 처리
    • 기능:
      • 클러스터와 외부 시스템 간의 커뮤니케이션을 담당
      • API 엔드포인트를 제공하고, 클러스터 상태에 대한 데이터를 JSON 형식으로 응답
      • 모든 Kubernetes 클러스터 리소스에 대한 CRUD(Create, Read, Update, Delete) 작업을 처리
    • 운영 방식: API 서버는 RESTful API를 통해 외부 요청을 처리하고, 클러스터 내부와 외부 간의 통신을 관리
    • 통신 방식: 다른 컴포넌트들과 통신할 때 etcd와 연동하여 데이터를 저장하고, 클러스터의 상태를 관리

 

kube-scheduler

  • 파드(Pod)를 적절한 노드(Node)에 배치하는 역할을 담당하는 컴포넌트
  • 각 파드는 클러스터 내에서 실행할 노드를 지정하지 않으며, 스케줄러가 최적의 노드를 결정하여 파드를 배치
    • 기능:
      • 클러스터 내에서 파드를 실행할 노드를 선택
      • 노드의 리소스 상태(CPU, 메모리, etc.)와 파드의 요구 사항을 고려하여 최적의 노드에 파드를 할당
      • Affinity(친화성), TaintsTolerations와 같은 정책을 고려하여 파드를 배치할 노드를 결정
      • PodPriorityResourceRequests/Limits 등을 기반으로 배치 우선순위를 관리
    • 운영 방식: 파드의 요구 사항(예: 리소스, 노드 특성 등)을 바탕으로 가능한 노드를 선택하고, 그 노드에 파드를 배치하도록 kube-apiserver에 요청 전송

 

kube-controller-manager

  • 클러스터의 상태를 관리하고, 클러스터 상태가 지정된 목표 상태와 일치하도록 하는 컨트롤러들의 집합을 관리하는 컴포넌트입니다. 이 컴포넌트는 지속적으로 클러스터 리소스의 상태를 감시하고, 목표 상태를 달성하기 위해 필요한 작업을 수행합니다.
    • 기능:
      • ReplicationController, Deployment, Job, CronJob 등과 같은 여러 컨트롤러들을 실행하여 리소스의 상태를 관리합니다.
      • 클러스터의 상태를 계속 감시하며, 필요시 Pod를 추가하거나 삭제하고, ReplicaSet을 관리하거나, Job을 실행하는 등 상태 변경을 수행합니다.
      • NamespaceServiceAccount 같은 리소스들의 관리를 담당하며, 리소스의 상태를 원하는 상태로 만드는 일을 합니다.
    • 운영 방식: kube-controller-manager는 다양한 컨트롤러를 실행하는 단일 프로세스로, 각 컨트롤러는 특정 리소스의 상태를 감시하고 필요한 조치를 취합니다.

 

 

  • kube-apiserver  : 외부 및 내부에서 발생하는 모든 요청을 받아서 처리하고, 그 결과를 etcd에 저장
  • kube-scheduler :파드가 실행될 적합한 노드를 결정하고 배치
  • kube-controller-manager : 파드, 서비스, 디플로이먼트 등 다양한 Kubernetes 리소스를 관리하고, 클러스터가 항상 원하는 상태를 유지하도록 
 
반응형