[K8S Digging ⛏] Kubernetes 주요 구성 요소

KwanHong·2021년 6월 30일
1

Kubernetes

목록 보기
1/2

개요 🔮

  • Kubernetes 알아보기
  • Kubernetes의 구성 요소를 알아본다
  • 각 구성 요소의 역할을 알아본다

Kubernetes Architecture

쿠버네티스는 클러스터를 관리하는 도구이다.
여기서 말하는 클러스터는 우리가 일반적으로 이해하고 있는 클러스터의 개념과 동일하다.

  • 여러대의 머신을 하나의 묶음으로 취급

클러스터를 관리한다는 말은, 클러스터를 구성하는 요소들의 묶음을 관리한다는 말과 같다.

클러스터를 구성한 요소들은 크게 아래 세 가지로 구분된다.

  • Master 컴포넌트
  • Node 컴포넌트
  • Addon 컴포넌트

Kubernetes Cluster Components

Master 컴포넌트

마스터 구성 요소들은 클러스터를 실질적으로 관리하는 요소들이다.
etcd, kube-apiserver, kube-scheduler, kube-controller-manager, cloud-controller-manager 등이 있다.

etcd

  • 고가용성을 제공하는 key-value 저장소
  • 쿠버네티스에서 필요한 정보를 저장
  • 모든 상태와 데이터를 저장
  • 분산 시스템으로 구성하여 안전성을 높임

kube-apiserver

  • 쿠버네티스는 MSA(Micro Service Architecture) 구조로 되어 있어 여러개의 분리된 프로세스로 구성
  • kube-apiserver는 클러스터의 api를 사용할 수 있게 해주는 프로세스
  • 클러스터에 대한 요청이 유효한지 검증
  • etcd와 통신하는 유일한 모듈
  • 수평적으로 확장되도록 디자인

kube-scheduler

  • 새로운 pod들이 만들어질 때, 현재 클러스터 내에서 자원할당이 가능한 노드들 중 알맞은 노드에 할당
  • 노드의 현재 상태와 pod의 요구사항을 체크

kube-controller-manager

  • 쿠버네티스에서는 각각의 컨트롤러들이 pod를 관리
  • kube-controller-manager는 이런 각각의 컨트롤러들을 실행하는 역할
  • 지속적으로 상태를 체크하고 원하는 상태 (desired state)를 유지하도록 함

Node 컴포넌트

노드 컴포넌트는 모든 모드에서 실행.
각 노드에서 pod가 실행되는 것과 쿠버네티스 실행환경 관리.
kubelet, kube-proxy, container runtime이 있다.

kubelet

  • 노드안의 컨테이너를 실행하고 관리
  • 클러스터 안 모든 노드 안에서 실행되는 에이전트
  • PodSpec 이라는 설정에 따라 컨테이너 실행하고 헬스 체크 수행

kube-proxy

  • 내/외부 통신 설정
  • 쿠버네티스가 사용하는 가상 네트워크를 동작할 수 있게 하는 실질적인 역할 담당
  • 호스트의 네트워크 규칙 관리 및 커넥션 포워딩
  • iptables 또는 IPVS 사용

Reference

profile
본질에 집중하려고 노력합니다. 🔨

0개의 댓글