본문 바로가기
IT

[쿠버네티스] 쿠버네티스의 구조

by laoching 2024. 7. 15.
728x90
반응형

쿠버네티스

쿠버네티스는 컨테이너화된 앱의 자동 배포, 확장 및 관리를 해주는 오픈소스다.

쿠버네티스 구조

쿠버네티스 클러스터, 컨트롤 플레인, 노드, 워크로드, 네트워크, 스토리지

 

쿠버네티스 클러스터

  • 마스터 노드: 개발자가 주로 마스터 노드와 통신
  • 워커 노드: 사용자는 인터넷을 통해 워커 노드와 통신하는 경우가 많음

위 구조를 유지하기 위해서는 마스터 노드와 워커 노드 간 유기적인 통신이 중요한데, 이를 위해 CNI(container network interfaces)라는 개념이 사용된다.

  • CNI: 쿠버네티스 클러스터에 존재하는 컨테이너 간의 통신을 위해 필요한 인터페이스. 대표적인 cni 플러그인은 flannel과 calico임

컨트롤 플레인

마스터 노드는 컨트롤 플레인을 다루는데, 컨트롤 플레인은 쿠버네티스 클러스터 전반의 작업을 관리하는 역할을 한다.

  • api server : 쿠버네티스의 작업은 kubect명령어를 통해 마스터 노드의 kube-apiserver에게 api 요청을 보냄으로써 이루어진다. api 서버는 쿠버네티스 컨트롤 플레인에서의 프런트엔드 역할을 한다.
  • etcd : 쿠버네티스 클러스터에 존재하는 모든 데이터를 저장하는 key-value 저장소임
  • 스케줄러 : 쿠버네티스에는 이후 배울 파드(pod)라는 오브젝트를 통해 애플리케이션을 실행함. 파드는 쿠버네티스 클러스터를 구성하는 노드 중 하나에 실행됨. 이때 새롭게 생성되는 파드를 어느 노드에 실행시킬지 정하는 역할을 kube-scheduler가 수행함
  • 컨트롤러 매니저 : 쿠버네티스 리소스를 관리하고 제어하는 역할을 함. 마스터 노드에서 실행되며 클러스터 상태를 모니터링함. 디플로이먼트 컨트롤러, 서비스 컨트롤러, 레플리카셋 컨트롤러 등 여러 종류가 있음.

노드

  • kublet : 파드 내부의 컨테이너 실행을 담당함
  • kube-proxy : 노드에 존재하는 파드들이 쿠버네티스 내부/외부와 네트워크 통신을 가능하게 함
  • 컨테이너 런타임 : 컨테이너의 생명주기를 담당함. 이를 위해 kubelet은 컨테이너 런타임과 통신하는데, 이때 사용하는 것이 컨테이너 런타임 인터페이스임. containerd, CRI-O 등이 있는데 컨테이너드가 보편적
  • 파드 : 쿠버네티스는 컨테이너가 단속 실행되지 않고 파드 안에서 실행됨. 각 파드는 한 개 혹은 여러 개의 컨테이너를 담을 수 있음. 파드는 컨테이너를 그룹화 한것이라고 생각하면 편함.하나의 파드에 속하는 컨테이너들은 모두 같은 노드에서 실행됨. 서로 다른 파드는 서로 다른 노드에서 실행될 수 있지만, 하나의 파드가 분할되어 여러 노드에 실행되는 일은 없다.
  • 파드는 실행할 때마다 ip 주소를 배정받기 때문에 실행할 때마다 변경됨.
  • 도커의 최소 실행 단위: 컨테이너 / 쿠버네티스의 최소 실행 단위 : 파드

워크로드

쿠버네티스에서 실행되는 애플리케이션을 의미. 워크로드가 하나의 컴포넌트 형태든, 다수의 컴포넌트가 함께 실행하든 쿠버네티스는 파드 내부에서 워크로드를 실행한다. 이때 파드는 실행 중인 컨테이너의 집합을 나타냄

  • 레플리카셋 : 파드의 복제를 관리하며 클라이언트가 요구하는 복제본 개수만큼 파드를 복제하고 모니터링하고 관리함.
  • 디플로이먼트 : 애플리케이션의 배포와 스케일링을 관리함
  • 스테이트풀셋 : 파드 사이에서 순서와 고유성이 보장되어야 하는 경우에 사용
  • 데몬셋 : 쿠버네티스르 구성하는 모든 노드가 파드의 복사본을 실행하도록 함. 쿠버네티스 클러스터에 새로운 노드가 추가되면 파드 역시 추가됨. 데몬셋은 주로 로깅, 모니터링, 스토리지 등과 같은 시스템 수준의 서비스를 실행하는 데 사용됨.
  • 잡, 크론잡 : 작업이 정상적으로 완료되고 종료되는 것을 담당. 파드가 정상적으로 종료되지 않으면 재실행함. 잡은 작업이 한 번 종료되는 것을 담당하고 크론잡은 동일한 작업이 스케줄에 따라 여러 번 수행하는 것을 담당함. 크론잡은 크론탭과 비슷함.

네트워크

  • 서비스 : 파드를 여러 개 묶어서 클러스터 외부로 노출시킬 수 있음. 이미 실행 중인 파드를 외부로 노출시키기 위해 파드 내부를 수정할 필요가 없음.
  • 인그레스 : 쿠버네티스 내부에 존재하는 서비스를 http/https 루트를 클러스터 외부로 라우팅하는 역할을 함

스토리지

  • 컨테이너 삭제 시 컨테이너 내부에 있는 파일들은 모두 날라가는데 쿠버네티스 스토리지를 활용하면 파드의 상태와 상관 없이 파일 보관 가능
728x90
반응형

댓글