[Kubernetes] Kubernetes의 정의와 사용목적

이멀젼씨

·

2021. 9. 14. 16:56

목적

kubernetes의 정의와 구조에 대해 알고자 함

목차

  1. kubernetes란?
  2. kubenetes의 사용 목적
  3. kubernetes의 구조

1. kubernetes란?

Kubernetes, also known as K8s, is an open-source system for automating deployment, scaling, and management of containerized applications.

컨테이너화 된 어플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈 소스 시스템입니다.

위의 정의는 쿠버네티스 공식 홈페이지에서 가져온 내용이다.

여기서 컨테이너란 어플리케이션이 특정 컴퓨터 환경에서 빠르고 안정적으로 실행될 수 있도록 하는 소스코드와 모든 종속성을 패키징하는 소프트웨어의 표준 단위이다.

예를들어 스프링서버 컨테이너라고 한다면, 우리가 작성한 스프링관련 코드와 이를 실행할 수 있는 JDK가 함께 패키징 된 것이라고 볼 수 있다.

따라서 우리는 해당 서버를 실행하려면 컨테이너 엔진 위에 컨테이너를 기동시키면 된다.

만약 컨테이너를 사용하지 않는다면, OS부터 JDK까지 직접 설치하고 버전을 맞추는 번거로움을 겪어야 한다.

이러한 컨테이너들의 관리를 자동화하여 편리하게 다룰 수 있게 해주는 것이 바로 쿠버네티스이다.

2. Kubernetes의 사용 목적

처음엔 Hipervisor에서 GuestOS를 띄우고 그 위에 어플리케이션을 실행하다, 그 이후 Docker와 같은 컨테이너 엔진위에서 컨테이너 단위로 어플리케이션을 실행하는 모습으로 어플리케이션 관리 인프라가 달라져왔다.

컨테이너의 세계로 접어들면서, 서비스가 커지고 복잡해질수록 컨테이너의 수도 무수히 많아졌다.

컨테이너의 수가 얼마 되지 않는다면 관리하기가 쉽겠지만, 수백, 수천개의 컨테이너가 존재하는 서비스의 경우 그것들을 사람이 관리하기가 쉽지 않다.

따라서 이렇게 수많은 컨테이너들을 자동적으로 관리해주기 위한 목적 사용되고 있다.

3. Kubernetes의 구조

노드들을 관리하는 Master노드 1개와 어플리케이션들이 배포되는 Worker노드로 구분된다.

여기서 노드라는 것은 리눅스 운영체제를 가진 VM이라고 보면 이해하기 쉽다.

필자가 구축한 방식은 윈도우 운영체제 위에 Virtual Box와 같은 Hypervisor를 설치하고, 그 위에 3개의 VM을 할당하여 구성하였다.

각 VM을 만든 후 Kubenetes를 설치하고, Master노드로 사용할 VM에 Node1과 Node2를 등록하여 Master노드가 나머지 노드들을 관리할 수 있도록 한다.

Master노드는 다양한 오브젝트들을 사용하여 컨테이너의 배포, 스케일링, 모니터링 등을 도와주게 된다.

'Kubernetes > 이론' 카테고리의 다른 글

[Kubernetes] Secret  (0) 2021.10.04
[Kubernetes] ConfigMap  (0) 2021.09.27
[Kubernetes] Service  (0) 2021.09.24
[Kubernetes] Pod  (0) 2021.09.15