Container/Kubernetes

[Kubernetes] 쿠버네티스 간단한 개념 살펴보기 (기본 용어, 클러스터 아키텍처, 컨트롤러 간단한 개념)

Nirsa 2020. 2. 14. 15:02
반응형

 

  • 쿠버네티스란?

쿠버네티스를 간단히 말하자면 Linux 컨테이너 작업을 자동화해주는 오픈소스 플랫폼 입니다. 각 컨테이너별 자원 제한, 문제 발생 시 자동 시작 등 컨테이너를 배포/확장, 제어, 자동화하기 위한 다양한 기능을 지원하는 컨테이너 오케스트레이션 도구 입니다.

대규모 커뮤니티와 여러 경험과 기술이 녹아져있어 굉장히 다양한 기능을 제공하다보니 빠르게 알려지고 있고, 기업들에서 도입하는 사례가 늘고 있습니다.

 

  • 쿠버네티스 기본 용어

쿠버네티스에서 사용하는 기본 용어들이 있습니다. 

  • 마스터(Master) : 노드를 제어하고 전체 클러스터를 관리해주는 컨트롤러 이며, 전체적인 제어/관리를 하기 위한 관리 서버 입니다.
  • 노드(nod) : 컨테이너가 배포될 물리 서버 또는 가상 머신 이며 워커 노드(Worker Node) 라고도 부릅니다.
  • 파드(pod) : 단일 노드에 배포된 하나 이상의 컨테이너 그룹이며, 파드라는 단위로 여러개의 컨테이너를 묶어서 파드 단위로 관리 할 수 있게 해줍니다.

대략적인 구조는 아래와 같습니다. (정확히는 Pod를 묶어서 관리하는게 Docker 같은 툴 입니다. )

즉 Master서버(제어/관리 서버) 아래에 각각의 Node(물리서버or가상서버)가 있고, 그 Node 안에 컨테이너들을 그룹으로 묶어서 관리해줄 수 있는 Pod가 있습니다. 

하나의 노드 안에 여러개의 파드가 있을 수 있으며, 하나의 파드 안에 여러개의 컨테이너가 있을 수 있습니다.

또한 master 서버의 경우 고가용성 유지를 위해 여러개로 구성할 수 있으며 실제 관리는 리더 마스터 서버가 하되 나머지는 후보 마스터 서버로 유지 합니다. 만약 리더 마스터 서버가 장애 발생하면 후보 마스터 서버 중 하나가 리더 마스터 서버 역할을 맡아 서비스상의 이슈가 없도록 합니다.

 

  • 쿠버네티스 클러스터 아키텍처

 

  • 쿠버네티스 컨트롤러 간단한 개념

내가 원하는 상태를 정하고, 그 상태를 컨트롤하기 위한것이 컨트롤러 입니다. 이후 자세히 업로드를 진행 하겠지만, 간단한 종류 및 개념은 아래와 같습니다.

  • 데몬 셋(DaemonSet) : 모든(또는 일부) 노드가 파드를 실행하도록 하며 클러스터에 노드가 추가되면 자동으로 파드도 같이 추가 됩니다.
  • 스테이트풀 셋(StatefulSet) : 어플리케이션의 스테이트풀을 관리하며, 여러개의 파드를 실행할 때 첫번째 파드가 정상 실행되어야 다음 파드가 실행된다거나 하는 순차적인 정상 배포 기능, 자동 롤링 업데이트 등의 기능을 제공 합니다.
  • 디플로이먼트(Deployment) : 스테이트풀은 상태가 있는 어플리케이션을 관리했다면, 디플로이먼트는 상태가 없는 어플리케이션을 관리 합니다. 레플리카셋을 관리하며 배포할 때의 기본 단위가 될 수 있습니다.
  • 레플리카셋(ReplicaSet) : 파드 개수에 대한 가용성을 보증하며, 지정한 개수 만큼의 파드가 항상 실행 되도록 관리 합니다.
  • 잡(job) : 지정한 개수의 포드에서 실행할 작업을 정상적으로 수행할 수 있도록 보장 합니다. 크론잡(cronjob)을 사용하여 지정한 주기에 따라 주기적으로 작업을 실행시킬 수 있습니다.

 

반응형