1. 쿠버네티스 클러스터 전체 구조

쿠버네티스 클러스터 구성은 크게 마스터와 노드로 구성

마스터

  • 클러스터 관리
  • 주요 컴포넌트: etcd, kube-apiserver, kube-scheduler, kube-controller-manager

노드

  • 컨테이너 실행
  • 주요 컴포넌트: kubelet, kube-proxy, docker

Info Notice: kubelet, kube-proxy, docker 는 마스터 구성 컴포넌트에도 포함될 수 있음

2. 쿠버네티스 주요 컴포넌트

쿠버네티스 컴포넌트는 크게 세가지로 구분

  • 마스터용 컴포넌트
  • 노드용 컴포넌트
  • addon용 컴포넌트

2.1 마스터용 컴포넌트

etcd

  • key-value 저장소
  • 쿠버네티스 필요 데이터 저장(데이터베이스 역할)

kube-apiserver

  • 쿠버네티스에 보내는 모든 요청을 다른 컴포넌트에 전달
  • 요청에 대해 유효성 검증(권한, api 스펙)

kube-scheduler

  • 자원 할당이 가능한 노드에 파드 실행
  • 파드의 조건에 맞는 노드 선택(affinity, anti-affinity, HW 요구사항)

kube-controller-manager

  • 파드 관리 컨트롤러

cloud-controller-manager

  • 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해 관리
content description
Node Controller 클라우드 서비스 안에서 노드 관리
Route Controller 클라우드 서비스 안에서 네트워크 라우딩 관리
Service Controller 클라우드 서비스 안에서 로드밸런서 관리
Volume Controller 클라우드 서비스 안에서 볼륨을 노드에 연결/마운트 관리

2.2 노드용 컴포넌트

kubelet

  • 파드 컨테이너들의 실행을 직접 관리
  • PodSpecs 조건에 따라 파드 실행
  • 컨테이너 헬스 체크 진행

kube-proxy

  • 클러스터 안에 별도의 가상 네트워크 설정

컨테이너 런타임

  • 컨테이너 실행 컴포넌트
  • docker
  • containerd
  • runc

2.3 애드온용 컴포넌트

클러스터 안에서 부가적인 기능을 실행하는 파드

네트워킹 애드온

  • kube-proxy 외에 클러스터 안에서 가상 네트워크 구성에 사용
  • 프라넬, 칼리코, 캐널, 위브넷 등

DNS 애드온

  • 클러스터 안에서 동작하는 DNS 서버
  • kube-dns, CoreDNS

대시보드 애드온

  • 웹 UI로 쿠버네티스를 사용할 수 있도록 하는 기능 제공

컨테이너 자원 모니터링

  • CPU, 메모리 사용량 등 모니터링 제공
  • kubelet에 포함된 cAdvisor

클러스터 로깅

  • 컨테이너 개별 로그와 쿠버네트스 구성 요소 로그를 중앙화
  • ELK(ElasticSearch Logstash Kibana)
  • EFK (ElasticSearch Fluentd Kibana)

3. 오브젝트와 컨트롤러

쿠버네티스는 오브젝트와 이를 관리하는 컨트롤러라는 개념이 존재. 사용자가 desire state를 탬플릿 등으로 정의하면 컨트롤러는 desire state와 현재 상태가 일치하도록 오브젝트를 생성/삭제함

  • 오브젝트: 파드, 서비스, 볼륨, 네임스페이스 등
  • 컨트롤러: 레플리카세트, 디플로이먼트, 스테이트풀세트, 데몬세트, 잡 등

댓글남기기