쿠버네티스 클러스터 컴포넌트

ZER0·2022년 10월 4일
0

Kubernetes

목록 보기
1/39
post-thumbnail

1. 클러스터 컴포넌트 구성 요소

  • 쿠버네티스가 구성된 환경을 클러스터라고 부르며, 클러스터는 쿠버네티스가 동작하도록 하는 컴포넌트와 파드가 배포(실행)되는 노드로 이루어져 있음

  • 일반적인 클러스터는 아래 그림처럼 구성

컴포넌트 구성 요소

  • 노드
    • 마스터 노드
    • 워커 노드
  • 마스터 노드 컴포넌트
    • API Server
    • etcd
    • Scheduler
    • Controller manager
  • 워커 노드 컴포넌트
    • kubelet
    • kube-proxy
    • Container Runtime

2. 마스터 노드

  • 마스터 노드·마스터·control plane 등으로 호칭하며 쿠버네티스가 작동하는데 필요한 컴포넌트가 배포 및 실행되는 노드

  • 마스터 노드에 장애가 발생하거나 다운될 경우 K8s 환경 전체에 장애가 발생하므로, Prod 환경에서 운영 시 마스터 노드는 반드시 HA로 구성해야 함


3. 워커 노드

  • 파드가 배포 및 실행되는 노드로서 파드를 생성하고 관리하는 실질적인 주체

4. 마스터 노드 컴포넌트

  • API Server

    • PC에 비유하면 CPU의 역할을 수행하며 etcd와 통신할 수 있는 유일한 컴포넌트
    • 끊임없이 Scheduler와 Controller manager 등 다른 컴포넌트의 상태를 확인하고, 이들로부터 받은 요청을 kubelet에 전달해 작업을 수행함
  • etcd

    • key-value 저장소로서 클러스터의 모든 설정과 상태를 저장하는 일종의 DB
    • 반드시 API Server와만 통신하고, Scheduler 등 이외의 컴포넌트는 API Server에 요청하면 API Server가 etcd로부터 값을 읽어와 응답을 전달하는 구조
    • K8s에서 가장 중요한 컴포넌트로, 클러스터 전체가 다운될 경우 백업해둔 etcd 값을 활용해 복구 가능
  • Controller manager

    • Node Controller, Replication Controller, Deployment Controller 등 컨트롤러를 관리하는 컴포넌트
    • 파드·디플로이먼트 등의 오브젝트와 노드의 상태를 모니터링(C-M이 직접 모니터링하는 것은 아니고 API Server로 부터 상태 값을 전달받음) 수행
  • Scheduler

    • 파드가 필요로 하는 리소스와 노드가 가용할 수 있는 리소스 그리고 여러가지 제약 조건(커든, 어피니티, 테인트 등)을 고려해 파드를 적절한 워커 노드에 배포(할당)하는 컴포넌트

5. 워커 노드 컴포넌트

  • kublet

    • 파드의 생성부터 소멸 및 복구 등 전체 Life-Cycle에 수반되는 작업을 수행하는 컴포넌트
    • 워커 노드를 새로 생성한 경우 클러스터에 노드를 등록하고, 워커 노드와 파드의 상태를 주기적으로 API Server에 응답
    • API Server로부터 파드 핸들링에 관한 명령을 전달받아 API Server 대신 수행
  • kube-proxy

    • 클러스터 내의 노드와 파드간에 통신이 가능하도록 하는 컴포넌트
    • 워커 노드로 인입되는 트래픽을 적절한 파드로 라우팅하고, 파드 내에서의 네트워크를 핸들링
  • Container Runtime

    • 파드에서 실행될 컨테이너 엔진
    • Docker, containrd, CRI-O 등

6. 참고

  1. https://kubernetes.io/ko/docs/concepts/overview/components/
  2. https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
profile
Security Compliance Engineer

0개의 댓글