본문 바로가기
Kubernetes

[k8s] 마스터, 워커

by Nhahan 2023. 4. 12.

쿠버네티스는 일반적인 클러스터 시스템과 비슷하게 크게 마스터와 워커 노드로 구분된다.

 

  • 마스터
    • kube-apiserver: 마스터로 전달되는 모든 요청을 받아들이는 REST API 서버
    • etcd: 클러스터내 모든 메타 정보를 저장하는 저장소
      • 쿠버네티스 클러스터에  필요한 모든 데이터를 저장하는 분산형 key-value DB 역할 수행. 고가용성을 위해 etcd 클러스터를 구축하여 안정성을 높힐 수 있다
    • kube-scheduler: 사용자의 요청에 따라 적절하게 컨테이너를 워커 노드에 배치하는 스케줄러
    • kube-controller-manager: 현재 상태와 바라는 상태를 지속적으로 확인하며 특정 이벤트에 따라 특정 동작을 수행하는 컨트롤러
      • 지속적으로 control loops을 돌며 현재 상태(current state)와 바라는 상태(desired state)를 비교하고, 두 상태가 달라지면 그것을 인지하고 현재 상태가 바라는 상태가 되도록 클러스터의 상태를 바꿈
    • cloude-controller-manager: 클라우드 플랫폼(AWS, GCP, Azure 등)에 특화된 리소스를 제어하는 클라우드 컨트롤러
  • 노드
    • kubelet: 마스터의 명령에 따라 컨테이너의 라이프 사이클을 관리하는 노드 관리자
      • 각 노드에서 실행되는 메인 컴포넌트. 마스터로부터 특정 컨테이너를 실행시키기 위해 상세 스펙을 받아 실행시키고, 해당 컨테이너가 정상적으로 동작하는지 지속적으로 모니터링. 주기적으로 api 서버와 통신하며 마스터와 노드간에 필요한 정보(노드의 상태 정보, 리소스 사용량 등)을 주고 받음
    • kube-proxy: 컨테이너의 네트워킹을 책임지는 프록시
      • 각 노드에 위치하며 쿠버네티스의 서비스 네트워킹을 담당하는 컴포넌트. 서비스마다 개별 IP를 가질 수 있게 만들어 주고 클러스터 내/외부의 트래픽을 Pod으로 전달할 수 있도록 패킷을 라우팅
    • container runtime: 실제 컨테이너를 실행하는 컨테이너 실행 환경
      • 실제 컨테이너를 실행시키는 역할(ex. 도커).

 

 

댓글