[쿠버네티스 기초 01] 쿠버네티스 아키텍쳐

이 포스팅은 UdemyCertified Kubernetes Administrator with Practice Tests 강의를 정리한 내용입니다.

쿠버네티스 아키텍처에 대해 알아봅시다.

기본

배를 비유로 들어 쿠버네티스 아키텍처에 대해 설명

쿠버네티스의 목표는 컨테니어 형태로 된 어플리케이션을 자동화 된 방법으로 호스팅하는 데 있음

  • 어플리케이션에서 필요한 만큼 인스턴스를 띄우거나
  • 어플리케이션 내 서로 다른 서비스 간 커뮤니케이션을 쉽게 하도록

이것들을 위해서는 많은 컴포넌트들이 필요하다.

배를 비유로 들면,

  • 실제로 컨테이너를 싣고 바다를 돌아다니는 화물선 (=워커 노드)
  • 이러한 화물선들을 관리하는 관리선이 있음 (=마스터 노드)

쿠버네티스 클러스터는 여러 개의 노드들로 구성되어 있음

k8s-archi

마스터 노드 (관리선)

  • 화물선에 컨테이너를 싣는 역할. 또 어떻게 실을지 계획을 세움
  • 적절한 화물선을 선택
  • 각종 정보 저장, 컨테이너 관리, 모니터링, 통신 등 모든 것을 관리함
  • 여러 개의 컴포넌트들로 구성 (control plane component)

Control Plane Component

  • etcd: 어느 곳에 어느 컨테이너가 로드되어 있고, 언제 로드 되었고 등등 각종 정보를 저장하는 키 밸류 저장소
  • scheduler: 해당 컨테이너의 크기나 현재 워커 노드의 상황 등등을 토대로 해당 컨테이너가 어느 노드에 로드되어야 하는지 결정하는 역할
  • controller manager: 트래픽 컨트롤, 컨테이너나 노드 고장 등을 관리하는 컴포넌트. 노트 컨트롤러, replication 컨트롤러가 있음.
  • api server: 위 컴포넌트들을 서로 통신하게 만드는 컴포넌트. 클러스터 안에서 일어나는 모든 동작에 대해 조율하는 역할. k8s api를 노출시켜 이를 통해 외부 유저들이 k8s 클러스터에 대해 일련의 행위를 가능하게 함.

Container Runtime Engine

  • 컨테이너를 실행하는 소프트웨어
  • 대표적으로 Docker 를 사용
  • 모든 노드(마스터 노드 포함)에는 Docker가 설치되어 있어야 함
  • 쿠버네티스는 Docker말고도 ContainerDRocket도 지원함

워커 노드 (화물선)

실제로 컨테이너가 실리는 곳

Kubelet

  • 화물선에서 선장 역할
  • 각 노드에서 실행되는 에이전트
  • 워커 노드에서 일어나는 모든 활동에 대해 책임이 있음
  • 마스터 노드와 통신 (특히 클러스터에 조인하는 경우)
  • 해당되는 컨테이너를 싣고 그 결과를 마스터에 공유하는 일
  • 자신의 노드와 컨테이너에 대한 상태도 마스터에 보고함
  • kube api 서버에서 명령을 받아서 컨테이너를 실행하거나 없애거나 하는 일을 함
  • kube api 서버는 정기적으로 kubelet으로 부터 노드와 컨테이너에 대한 상태 체크 리포트를 받음

kube-proxy

  • 워커 노드 간 통신을 담당함
  • 노드 내에 있는 컨테이너들이 다른 노드에 있는 컨테이너와 통신이 되게 하는 역할

© 2021. All rights reserved.

Powered by Hydejack v9.1.4