내가 보기 위한 쿠버네티스 정리글 - 1 (서론)

아카이브 · 2021. 4. 27. 23:04

쿠버네티스 이론을 정리하기 이전에 간단한 도커소개글을 작성해봅니다.

 

Snowflakes Server (스노우 플레이크 서버)

예전의 서버를 운영하는 방식은 서버를 설치하고 OS를 인스톨한 후에 필요한 소프트웨어와 어플리케이션을 설치하여 운영하는 형태였다. 위와 같은 방식으로 서버를 운영할때 개발서버와 운영서버는 환경이 다르기 때문에 개발서버에서 설치한 소프트웨어들을 운영서버에도 설치해줘야 하고, 코드에 문제가 있을 시 다시 배포를 다시 해줘야한다. 그렇기에 동일한 환경을 구성하기가 힘들고 또한 다양한 이유로 여러 사람의 손에 거쳐가면서 서버간 환경이 약간씩 달라질 수 있다 따라서 이러한 설정들을 다시 설정이 불가능하고 눈처럼 녹아버리는 서버의 형태라고 비유해서 snowflakes server라고 한다.


Phoenix Server (피닉스 서버)

위와 같은 이유로 Re-born(재탄생)의 개념을 가지고 탄생한것이 바로 피닉스 서버이다. 서버를 비우고 서버 설치 부터 어프리케이션을 설치하는 과정까지의 작업을 다시 시작한다. 하지만 위 작업들은 실제 개발을 할 때, 생각보다 많은 비용(시간)이 소요될 수가 있다.

그렇기에 이러한 작업들을 자동화(생산성 향상) 하는 방안들에 대해 고민을 하게 되었고. 이중 하나의 도구로써 베이스 이미지를 두고 차이가나는 부분만 바꿔서 작업하는 것으로 시간을 줄이고 같은 환경을 유지할 수 있게 해주는 도커를 소개하고자 한다.

 

도커(Docker)는 컨테이너 기반의 가상화 기술이다.

 

컨테이너란 프로세스가 사용할 자원을 격리하는 공간이며 보통은 마이크로서비스로 사용된다. 주요 특징으로는 아래와 같다.

  • 어플리케이션을 기능별로 나누어 변경/조합이 가능하게 한 것
  • 컨테이너를 사용하면 하나의 큰 어플을 서비스 단위로 잘라 빠르게 배포 가능.
  • 그리고 각각 분리해서 쓰니 변경사항이 분리된 다른 기능들에 영향 미치지 않음.

위와 같은 이유로 현재 많은 개발자들이 도커를 사용하고 있다.

 

그리고 컨테이너들도 많아지다 보면 관리하기에 어려움이 따른다. 이때 이러한 컨테이너들을 관리하기 위하여 사용하는 툴을 쿠버네티스라고 한다.

 

쿠버네티스는 오케스트레이션 툴이다.

 

오케스트레이션이란 아래와 같습니다.

  • 다수의 컨테이너를 조율 및 관리하기 위한 시스템
  • 오케스트레이션 엔진을 통해 컨테이너의 생성과 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드 밸런싱, 클러스터링 등 컨테이너로 어플리케이션을 구성하는 모든 과정을 관리할 수 있음
  • 다른 오케스트레이션 툴로는 ECS, 도커스웜 등이 있음 

쿠버네티스의 특징으로는

 

1. 확장성
Google에서 만든것의 명성에 걸맞게 일주일에 수십억 개의 컨테이너들을 운영하게 해준 경험에 따라 쿠버네티스가 디자인되었기 때문에, 손쉽게 확장될 수 있습니다.

2. 유연성
로컬 테스트, 프로덕트 운영이든 환경에 상관없이, 사용자의 복잡한 니즈를 모두 수용할 수 있는 유연성을 가지기에 사용자의 애플리케이션들을 끊임없고 쉽게 전달할 수 있습니다.

3. 이식성
쿠버네티스는 오픈소스로서 on-prem, 하이브리드, 또는 퍼블릭 클라우드 인프라스트럭처등 여러 환경에서 기동됩니다.

그 밖에 수 많은 장점, 특징을 가지고 있는 쿠버네티스 이지만 굉장히 단순한 로직을 가지고있습니다.

현재상태를 모니터링하면서 관리자가 설정한 상태의 값과 다르면, 관리자가 설정한값으로 바꿔주는 3단계의 심플한 법칙

그렇기에 관리자는 명령어로 관리하는것이 아니라, 설정한 값이 들어있는 yaml 파일 등으로 관리를 해 줍니다.

 

이 있으며 이 이외에도 헬스체크(자동화된 복구), 고가용성 등이 있다.

 

따라서 도커와 쿠버네티스를 요약하자면

  • 1개의 인스턴스만 사용 - 도커
  • 다수의 인스턴스, 많은 컨테이너 - 쿠버네티스