devops

쿠버네티스(Kubernetes, k8s), 컨테이너 오케스트레이션 본문

DevOps/Kubernetes

쿠버네티스(Kubernetes, k8s), 컨테이너 오케스트레이션

vata500 2022. 6. 29. 18:47
반응형

쿠버네티스

  • 오픈소스로 만들어진 컨테이너 오케스트레이션 도구
  • 컨테이너화된 어플리케이션을 자동 배포, 스케일링하는 기능 등을 제공한다.
  • 각기 다른 환경(온프레미스서버, VM, 클라우드)에 대응할 수 있다.

쿠버네티스에 적합하지 않는 환경

  • 여러 단계로 나뉘어지지않은 모놀리식 아키텍처에는 적합하지 않다. (모놀리식은 MSA로 분해하는 것이 먼저)
  • 컨테이너 수가 적은 경우 적합하지 않다.(docker compose만으로도 관리 가능)
  • 단순한 아키텍처에 스케일링이 불필요한 경우 적합하지 않다. 

쿠버네티스에 적합한 환경

  • 마이크로서비스를 컨테이너 방식으로 운영하는 조직이 확장성을 고려할 때
  • 무중단 서비스, 고가용성을 제공해야 할 때
  • 자가 치유 및 배치 실행, 로드 밸런싱, 구성 관리 등 기능들이 필요할 때

사실 AWS같은 클라우드 서비스가 제공하는 기능들과 중첩된다. 그러나 비용에 있어서 차이가 있다. 쿠버네티스는 온프레미스 상에서 사설 클라우드 인프라를 구성하거나, 하이브리드 형태를 운영할 경우에도 유용하게 사용된다.

또한, 쿠버네티스로 구성한 인프라를 AWS와 같은 클라우드에 마이그레이션도 가능하다.

쿠버네티스 작동원리

쿠버네티스 아키텍처

  • Cluster는 하나 이상의 제어판(Control Plane) 컴포넌트와 이와 연결된 몇개의 Woker Node로 구성되어 있다.
  • Worker Node는 Kubelet이라는 프로세스가 돌아가는데 , 이 Kubelet은 다른 노드와 서로 통신하거나 컨테이너를 실행하는 등의 테스트를 실행하게 한다.

  • Worker Node안에는 한개 이상의 컨테이너가 있다. 쉽게 말해서 Worker Node는 실제 어플리케이션이 실행되고 있는 곳이다.
  • 이 컨테이너와 컨테이너가 사용하는 볼륨, 컨테이너의 작동 정보를 파트(Pod)라고 한다.

  • 관리를 위해서 필요한 프로세스들은 모두 Control Plane 컴포넌트에 있다. 이 컴포넌트는 클러스터가 잘 작동할 수 있게 돕는 역할을 한다.
  • 이 Control Plane에는 여러 프로세스들이 있는데, 그 중 'API 서버'가 있다.

  • API 서버는 모든 클러스터 관리의 입구로, 명령을 내리는 관문이다. 
  • 실제 쿠버네티스가 제공하는 UI, CLI 등에서 클러스터 관리를 위해 명령을 내리면 API가 호출된다. 직접 호출도 가능하다.

  • Controller manager라는 것이 있다. 이는 클러스터에서 무슨 일이 발생하는지를 추적하는 역할을 한다. 컨테이너가 죽거나 재시작되는 것을 컨트롤러 매니저가 파악한다.

  • 스케쥴러는 노드 리소스를 바탕으로 컨테이너(Pod)가 노드에 배치되게 하는 역할을 한다. 새로 생성된 컨테이너를 찾아 노드에 할당한다.

  • ETCD라는 데이터베이스는 Key-value 저장소라 불리며, 클러스터 관리에 필요한 모든 데이터를 보관하는 공간이다.
  • 원하는 인프라를 만들기 위해, 정상 상태의 Snapshot 및 관리에 필요한 메타데이터가 어딘가에 저장되어야 하는데, ETCD는 이를 담당한다.

https://kubernetes.io/ko/docs/concepts/overview/components/

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

 

반응형
Comments