본문 바로가기
CSP (Cloud Service Provider)/GCP

[Google Cloud Platform] GCP 스토리지, 컨테이너

by BTC_손지수 2022. 7. 4.
스토리지, 컨테이너 
 - 컨테이너
 - 쿠버네티스

 

안녕하세요. BTC GCP팀 소속 손지수, 박은혜입니다.

요즘 날씨가 너무 더워서 지치기 쉬운데, 여유를 가지고 시원한 하루 보내시길 바랍니다.

 

 

 

 

앞서 GCP의 스토리지 옵션에 대해서 알아보았습니다.

 

이번주는 컨테이너와 쿠버네티스 개념을 간략하게 소개해보려고 합니다. 그럼 오늘도 잘 부탁드립니다.!

 

 

MODULE 04

스토리지, 컨테이너

 

 

이 글을 읽고 계시는 분들 중 대부분이 '서버관리', '컨테이너' 사용 경험이 없을 것으로 예상되고, 컨테이너, 쿠버네티스와 같은 개념을 낯설게 느끼실 것 같습니다. 기술적으로도 쉽지 않지만, 실제로 사용했을 때 굉장히 효율적인 기술들입니다.

 

그래서 이번 목표는 전체를 다 이해하는 것이 아닌 컨테이너와 쿠버네티스가 무엇인지를 알아가는 것을 목표로 글을 써보려고 합니다. 

 

 

 

컨테이너

 

  • 과거의 컨테이너

 

 과거에 서버 사용 할 때를 생각 해보겠습니다. 보통 기본적으로 서버1개 즉, H/W 1개를 설치하게 됩니다. 그리고 그 위에 운영체제(커널)를 설치하게 됩니다. 다음으로 운영체제 위에 어플리케이션을 설치하게 됩니다.  이 때, 커널과 어플리케이션 사이에 dependency 라는 것이 존재하게 되고. 이 dependency는 둘 사이의 커뮤니케이션을 도와줍니다. 대표적으로는 libary 등이 있습니다. 

따라서  Hardware - Kernel(OS) - Dependencies - Application형태로 총 4가지 Layer로 존재하며, 서비스를 제공합니다.

 그런데 이런 형태의 Layer로 사용하게 된다면 Utilization이 떨어지게 된다는 연구 결과가 나오게 되었고, utilization을 올리기 위해 고민하던 중 '가상화' 라는 개념을 생각해내며 'Virtual Machine'을 사용하게 되었습니다.

 

 

각각의 서버에 어플리케이션 빌드
 → VM의 발전, 하나의 하드웨어에서 여러 개의 OS 및 애플리케이션 실행

 하나의 VM에서 여러 개의 어플리케이션을 실행하고 유지하는 것은 쉽지 않습니다.

오른쪽 시스템 처럼 가상화, VM을 통해 하나의 하드웨어에 두개의 커널을 설치하고 각각 어플리케이션을 설치 할 수 있게 되었습니다. 시스템은 고민이였던 utilization이 올라갔습니다. 하지만 무겁다는 문제점이 있었고,  다음으로 왼쪽과 같이 구상하게 되었습니다. 시스템은 가벼워졌지만 이번에는 dependency를 공유하면서 발생하는 문제가 남아있었습니다.

 

이런 문제들을 해결하기 위해서 컨테이너 모델이 등장하게 되었습니다.

 

 

  • 컨테이너 모델

하나의 하드웨어와 하나의 커널(OS) 위에 2개의 dependency와 2개의 어플리케이션을 수행 시키는 것입니다. 이렇게 된다면 utilization:가동률도 증가하게 되고, dependency가 증가하므로 독립적이며, 가볍습니다.

 

 

 

  • IaaS의 유연성과 PaaS의 확장성을 제공하는 컨테이너

 

 

  • 구성이 가능하며 독립적이고 이식성이 우수한 컨테이너

 

컨테이너를 사용하게 되면 이식성이 좋으며, 모듈화 되어 마이크로서비스를 잘 활용할 수 있게 됩니다.

 

 

쿠버네티스

 

 

 구글에서는 이런 컨테이너 예전부터 굉장히 많이 사용하고 있었습니다. 수가 너무 많다보니 컨테이너들을 관리 해줄 필요가 생겼고, 이 역할을 하는 서비스가 바로 쿠버네티스 입니다.

 

 

  • 컨테이너 생성 과정 및 주요 개념

 위 그림은 전체적인 working process 입니다. 

개발자가 python(.py)을 이용한 개발 > 개발한 앱을 컨테이너로 생성 (GCP: Cloud Build)(Docker) > 공유 (GCP: Cloud Container Registry)(Docker Hub) > 테스트 및 배포

 간단하게 이런 프로세스를 따른다고 볼 수 있습니다. 테스트나 배포를 할 때 container registry에서 다운로드 받아서 사용 할 수 있는데, 보통은 컨테이너 1개만 사용하기 보다는 2개 이상의 컨테이너를 묶어 하나의 Pod 라는 것을 구성해 Load 및  Deploy 하게됩니다. 

 그럼 Pod를 VM(Node)에 적절히 배포해줄 필요하 있을 것이고 이 관리의 역할을 Kubernetes가 담당하게 됩니다. 쿠버네티스는 클러스터를 생성합니다. 클러스터에는 Master(관리담당)와 Node(Pod배포)들이 존재합니다.

 

 

  • 쿠버네티스 관련 제품

 쿠버네티스는 구글에서 개발하여 오픈소스화 시켰습니다. 여러분이 원하시면 on-premise, 다른 클라우드 어디든 사용 가능하십니다.

 만약 구글에서 쿠버네티스를 사용하시는 경우, 관리형 서비스 Google Kubernetes Engine(GKE)를 제공하고 있습니다.

다음 제품은 Istio 입니다. 컨테이너간의 커뮤니케이션을 도와주는 것을 서비스 매쉬라고 합니다. 이 서비스 매쉬를 오픈소스화 한 것이 Istio이며 보안, 트래픽 관리 역할 등을 합니다. 또한 관리형 서비스를 제공하며 해당 서비스가 Anthos 입니다. Anthos 사용 시, GKE와 on-premise의 클러스터를 동시에 관리 할 수 있는 플랫폼이므로 hybrid-cloud, multi-cloud 사용자에게 굉장히 유용한 제품이라고 생각됩니다.

 

긴 글 읽어주셔서 감사합니다.  오늘 하루도 좋은 하루 보내시길 바랍니다.

'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글

[Google Cloud Platform] 스토리지, 컨테이너  (0) 2022.07.08
Cloud VPN  (0) 2022.07.05
GCP Shared VPC에서 VPC SC까지 - 1  (0) 2022.07.04
GCP - Google CloudArmor 구성  (0) 2022.07.01
Serverless VPC  (0) 2022.06.30

댓글