데브옵스(DevOps)를 위한 쿠버네티스 마스터/쿠버네티스 들어가기

쿠버네티스 아키텍처

webmaster 2022. 6. 2. 12:26
728x90

쿠버네티스의 클러스터는 하드웨어 수준에서 많은 노드로 구성되며 두 가지 유형 나뉨 

Master Node - Worker Node 로 분리하여 관리한다

  • 마스터 노드: 전체 쿠버네티스 시스템을 관리하고 통제하는 쿠버네티스 컨트롤 플레인을 관장
  • 워커 노드: 실제 배포하고자 하는 애플리케이션의 실행을 담당

쿠버네티스 클러스터 아키텍처

kube-apiserver(군함장)을 통해 모든 것들의 접근하도록 한다.

컨트롤 플레인

  • 컨트롤 플레인에서는 클러스터를 관리하는 기능 
  • 단일 마스터 노드에서 실행하거나 여러 노드로 분할되고 복제돼 고가용성을 보장 
  • 클러스터의 상태를 유지하고 제어하지만 애플리케이션을 실행하지 않음
  • 구성요소
    • 쿠버네티스 API 서버: 사용자, 컨트롤 플레인과 통신 
    • 스케줄러: 애플리케이션 예약(애플리케이션의 배포 가능한 각 구성 요소에 워커 노드를 할당) 
    • 컨트롤 매니저: 구성 요소 복제, 워커 노드 추적, 노드 장애 처리 등 클러스터 수준 기능을 실행 
    • 데이터 스토리지: etcd는 클러스터 구성을 지속적으로 저장하는 안정적인 분산

워커 노드

  • 워커 노드는 컨테이너화 된 애플리케이션을 실행하는 시스템
  • 애플리케이션에 서비스를 실행, 모니터링, 제공하는 작업은 다음과 같은 구성요소로 수행
  • 컨테이너 런타임: 컨테이너를 실행하는 도커 
  • Kubelet: API 서버와 통신하고 노드에서 컨테이너를 관리
  • 쿠버네티스 서비스(Kubernetes Service), 프록시(kube-proxy): 애플리케이션 간에 네트워크 트래픽을 분산 및 연결

쿠버네티스에서 애플리케이션 실행

쿠버네티스 애플리케이션 실행 과정

  • 쿠버네티스에서 애플리케이션을 실행 전
    • 하나 이상의 컨테이너 이미지들을 패키지로 레지스트리에 푸시 
    • 쿠버네티스 API 서버에 애플리케이션의 디스크립션을 게시 
  • 디스크립션(YAML로 작성) 
    • 컨테이너 이미지 또는 애플리케이션 컴포넌트가 들어 있는 이미지가 존재
    • 컴포넌트 간 관련성 및 노드 배치(동일 노드 또는 다른 노드) 정보 포함 
    • 각 컴포넌트의 실행 복제본 수를 지정 
    • 내부 클라이언트나 외부 클라이언트에 서비스를 제공하는 컴포넌트
    • 단일 IP 주소로 노출해 다른 컴포넌트에서 검색
728x90