Section 2: Core Concepts > 11. Cluster Architecture

주영·2023년 11월 20일

udemy CKA

목록 보기
1/6

본 게시물은 유데미 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 듣고 정리한 글입니다.

  • 쿠버네티스의 목적
    • 응용 프로그램을 자동화된 방식으로 컨테이너 형식으로 호스트하는 것
    • → 요구에 따라 응용 프로그램의 많은 인스턴스를 쉽게 배포할 수 있고 응용 프로그램 내 다양한 서비스 간의 통신이 쉽게 가능
  • 쿠버네티스 클러스터
    • 노드 세트로 구성되는데 물리적, 가상, 온프레미스 또는 클라우드일 수 있고 컨테이너 형태의 응용프로그램 호스트일 수 있음
  • 워커 노드 : 컨테이너를 로딩할 수 있는 노드

  • 마스터 노드 : 컨트롤 플레인 컴포넌트들을 사용하여 클러스터를 관리하고 서로 다른 노드에 대한 정보를 저장하고 어떤 컨테이너가 어디로 갈지 계획하고 노드와 컨테이너를 모니터링하는 등을 책임지는 노드

  • 컨트롤 플레인 컴포넌트

    • ETCD
      • 고가용 키-값 스토어
      • 키-값 형식으로 정보를 저장하는 데이터베이스
      • 노드에 대한 정보, 어떤 컨테이너가 어느 노드에 있고 몇 시에 적재됐는지 등 클러스터 정보가 저장됨
    • kube-scheduler
      • 노드에 실어야 할 컨테이너를 식별
      • 노드의 크기와 노드에 실린 컨테이너의 수와 기타 조건들을 기준으로 목적지 노드와 실을 수 있는 컨테이너의 종류 등을 결정
      • 컨테이너 리소스 요구 사항, 워커 노드의 용량, 정책이나 제약 조건들, taint와 toleration, nodeAffinity 등에 근거하여 컨테이너를 설치하기 위한 올바른 노드를 식별
      • 노드의 응용프로그램이나 컨테이너의 스케줄을 짜는 역할
    • Controller-Manager
      • Node-Controller
        • 노드 관리
        • 새 노드를 클러스터에 온보딩하고 노드가 사용 불가능하거나 파괴되는 상황을 처리
      • Replication-Controller
        • 원하는 컨테이너 수가 replication group에서 항상 실행되도록 보장
    • kube-apiserver
      • 컨트롤 플레인 컴포넌트들을 높은 수준에서 관리
      • 쿠버네티스의 주요 관리 구성요소
      • 클러스터 내에서 모든 작업을 오케스트레이션함
      • 클러스터에서 관리 작업을 수행하는 데 외부 사용자가 사용
      • 요구에 따라 필요한 변경을 하고 워커 노드가 서버와 통신
  • 컨테이너 런타임 엔진

    • 컨테이너를 실행하기 위한 소프트웨어
      • 애플리케이션은 컨테이너 형태임
      • 마스터 노드에 전체 관리 시스템을 형성하는 다양한 구성 요소는 컨테이너 형태로 호스트될 수 있다.
        • DNS 서비스 네트워킹 솔루션은 컨테이너 형태로 배포될 수 있다.
    • ex. Docker, containerd, rkt
    • 클러스터 내 모든 노드에 설치되어 있다. (마스터 노드 포함)
  • kubelet

    • 모든 노드에 존재하여 노드의 모든 활동을 관리
    • 주요 노드들과 통신
    • 노드에 합류할 의사가 있다고 마스터 노드에 알리는 일부터 시작
    • 노드에 실을 컨테이너에 대한 정보를 받고 필요한 만큼 적재하고 해당 노드의 컨테이너 상태와 노드에 실린 컨테이너의 상태 등을 마스터 노드에 보고
    • 클러스터의 각 노드에서 실행되는 agent
    • kube-apiserver의 지시를 듣고 필요한대로 노드에서 컨테이너를 배포하거나 파괴
    • kube-apiserver는 주기적으로 kubelet으로부터 상태 보고서를 가져옴
      • 노드와 컨테이너의 상태를 모니터링하기 위함
    • 컨테이너와 kube-proxy를 관리
  • kube-proxy

    • 워커 노드에서 실행되는 응용프로그램은 서로 통신할 수 있어야함
      • ex) 한 노드의 한 컨테이너에서 웹 서버가 실행되고, 다른 노드의 다른 컨테이너에서 데이터베이스 서버가 실행됨 →
    • 워커 노드에서 실행되는 워커 노드 간의 통신 담당
    • 워커 노드 위에서 실행되는 컨테이너가 서로 닿을 수 있도록 워커 노드에 필요한 규칙이 시행되도록 함
    • 클러스터 내부의 서비스 간 통신을 가능하게 함

0개의 댓글