쿠버네티스(Kubernetes)란?

김채은·2022년 3월 23일
0

2021. 08. 02.

PROJECT

가상의 고객사 시스템 구축과 운영

  • SI

    • AWS 클라우드 환경 구성
    • 쿠버네티스 기반 EKS 환경 구성, 웹서비스 구축
  • SM

    • 로그 수집을 위한 EFK Stack 구축
    • CloudWatch 알람을 Slack으로 전송하여 실시간 모니터링

왜 쿠버네티스인가?

기존의 가상화 방식은 VMware나 VirtualBox처럼 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용하는 방식이었다. 이 방식은 여러가지 OS를 가상화할 수 있고(리눅스에서 윈도우 돌리기) 비교적 사용법이 간단하다. 하지만 무겁고 느려서 운영 환경에서 사용할 수 없다. MSA가 유행하면서 배포를 자주하게 되었고, VM의 단점을 개선하고자 프로세스를 격리하는 방식 등장했다.

컨테이너

격리된 공간에서 프로세스가 동작하는 기술이다. CPU나 메모리를 딱 프로세스가 필요한 만큼만 추가로 사용하기 때문에 성능적으로 손실이 거의 없다. 대표적인 컨테이너 기반의 오픈소스 가상화 플랫폼으로 도커가 있다.

컨테이너가 많아지면 이것들을 효율적으로 관리해야 한다. 예를 들어 구글은 일주일에 수십억 개의 컨테이너를 생성한다고 한다(!!). 컨테이너 오케스트레이션은 여러 개의 서버에 컨테이너를 배포하고 운영하면서 서비스 디스커버리 같은 기능으로 서비스 간 연결을 쉽게 해주는 것이다. 쿠버네티스는 구글이 내부 배포 시스템으로 사용하던 borg를 기반으로 시작한 컨테이너 오케스트레이션 프로젝트이다. 

쿠버네티스

컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼이다. 다양한 배포 방식을 지원하고, 클라우드를 지원하는 등 많은 장점으로 현재 클라우드 컨테이너 시장을 평정하였다.

Kubernetes Object

Pod

쿠버네티스에서 배포할 수 있는 가장 작은 단위이다. 한 개 이상의 컨테이너와 스토리지, 네트워크 속성을 가진다. Pod에 속한 컨테이너는 스토리지와 네트워크를 공유하고 서로 localhost로 접근할 수 있다. 컨테이너를 하나만 사용하는 경우도 반드시 Pod로 감싸서 관리한다. 

Deployment
애플리케이션 배포의 기본 단위가 되는 리소스이다. 몇 개의 파드가 얼마만큼의 자원을 사용할지, 애플리케이션을 어떤 방식으로 배포할지 정의한다.

Service
네트워크 관련 오브젝트이다. Pod를 외부 네트워크와 연결해주고 여러 개의 Pod를 바라보는 내부 로드 밸런서를 생성할 때 사용한다.

Kubernetes Architecture

Master-Node 구조

  • 마스터: 클러스터의 두뇌이다. 전체 클러스터를 관리한다. AWS EKS 같은 경우 마스터를 AWS에서 자체 관리하여 안정성 높였다(마스터에 접속 불가). 
  • 노드: 사용자의 워크로드를 실행한다. 마스터 서버와 통신하면서 필요한 Pod를 생성하고 네트워크와 볼륨을 설정한다. Pod는 각각의 워커노드에 배포되고 서비스를 통해 외부에 노출된다. 실제 컨테이너들이 생성되는 곳으로 수백, 수천대로 확장할 수 있다.

Kubectl

명령행 도구이다.

 관리형 Kubernetes

자체 호스팅

쿠버네티스를 자체적으로 구축한다. 아키텍쳐를 구축하고 지속적인 관리를 해주어야 한다. 쿠버네티스는 업데이트가 빠르므로 관리가 어렵다. 물론 설치도 어렵다.

관리형 쿠버네티스

기업에서 고가용성이 보장된 쿠버네티스 클러스터를 제공하는 것이다. AWS의 EKS, Google의 GKE, Azure의 AKS 등이 있다. 우리는 다음 그림과 같은 AWS의 EKS를 사용할 것이다.

profile
배워서 남주는 개발자 김채은입니다 ( •̀ .̫ •́ )✧

0개의 댓글