본문 바로가기
DevOps

[Devops] Kubernetes 쿠버네티스란?

by 가영리 2023. 8. 23.
728x90

 

쿠버네티스 (Kubernetes, kube, k8s)

쿠버테니스는 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 오픈소스 컨테이너 오크스트레이션 플랫폼이다.

쉽게 말해 컨테이너 관리 툴이라고 생각하면 된다.

 

하나의 애플리케이션을 배포할 때, 빌드 파일을 매번 똑같이 빌드하고 설치해야 하는 배포 과정을 매번 반복해야 해야 한다.

이때, DockerFile에 작은 os, 실행 파일 등을 말아서 도커 이미지를 생성한 후 컨테이너를 실행시키기만 하면 같은 과정을 반복하지 않아도 된다.

이런 컨테이너가 계속해서 늘어나면 관리하기가 어려워지는데 다양한 배포 방식과 auto scailing을 지원하는 쿠버네티스를 이용해 관리가 가능하다.

 

용어 정리

 

컨트롤 플레인

쿠버네티스 노드를 제어하는 프로세스의 컬렉션. 모든 태스크 할당의 시작

 

노드

컨트롤 플레인에서 할당된 요청 태스크를 수행하는 머신

 

포드 

단일 노드에 배포된 하나 이상의 컨테이너 그룹. 

포드에 있는 모든 컨테이너는 IP주소, IPC, 호스트 이름, 기타 리소스를 공유함

기본 컨테이너에서 네트워크와 스토리지를 추상화함

이를 통해 클러스터에서 컨테이너 이동을 더 쉽게 할 수 있음

 

복제 컨트롤러

클러스터에서 실행되어야 하는 동일한 포드 복사본의 개수를 제어

 

서비스

포드에서 작업 정의를 분리함

쿠버네티스 서비스 프록시는 클러스터에서 다른 위치로 이동된 경우나 교체된 경우에 상관없이 서비스 요청을 적절한 포드로 자동 수신함

 

Kubelet

이 서비스는 노드에서 실행되며 컨테이너 매니페스트를 읽고, 정의된 컨테이너가 시작되어 실행 중인지 확인

 

Kubectl

쿠버네티스의 커맨드 라인 구성 툴

 

쿠버네티스의 작동 방식

출처 https://www.redhat.com/rhdc/managed-files/kubernetes_diagram-v3-770x717_0_0_v2.svg

쿠버네티스 클러스터란? 컨테이너화된 애플리케이션을 실행하는 노드(워커 머신)의 집합
쿠버네티스 클러스터는 컨트롤 플레인, 노드(컴퓨팅 머신)으로 구분지을 수 있다.
  1.  각 노드는 컨테이너로 이루어진 포드 실행
  2.  컨트롤 플레인은 어느 애플리케이션을 실행하고 애플리케이션이 어느 컨테이너 이미지를 사용할지와 같이 클러스터를 원하는 상태로 유지관리 (쿠버네티스 클러스터의 원하는 상태는 실행해야 할 애플리케이션이나 워크로드, 함께 사용하는 이미지, 사용 가능하도록 설정할 리소스, 기타 구성 세부 사항을 정의)
  3. 노드는 애플리케이션과 워크로드를 실제로 실행
  4. 쿠버네티스는 운영체제를 기반으로 실행되며, 노드에서 실행되는 컨테이너의 포드와 상호 작용
  5. 컨트롤 플레인은 관리자로부터 명령을 전달받고 해당 지침을 노드에 전달
  6. 여러 서비스와 연계하여 태스크에 가장 적합한 노드를 자동으로 결정하고 요청된 작업을 수행하기 위해 해당 노드에 리소스를 할당하고 포드를 할당