Google Cloud Platform - GKE에 대해 알아보자
GCP의 쿠버네티스 GKE의 동작 원리
  • Backend

GKE

우선 GKE란 뭘까? Google Cloud에 들어가면 간단하게 설명되어 있다.

Google Kubernetes Engine (이하 GKE)
간단하게 Kubernetes를 자동으로 배포, 확장, 관리할 수 있습니다.

설명 내용만큼이나 설명도 간단하게 적어두었다. 이 것 만으로 이해하기엔 너무 벅차다!
(이 글을 작성중인 나도! 이 글을 읽고있는 당신도! 세상엔 모르는게 너무 많은 배울게 많은 개발자이니까)
그래서 좀 더 자세하고 알기쉽게 설명을 정리해보려고 한다.

쿠버네티스를 사용했을 때 이점

  1. GKE는 Standard와 Autopilot라는 2가지 작업 모드를 제공한다.
  • Standard는 커스텀 관리 워크로드를 미세 조정할 수 잇고 실행할 수 있는 노드를 완벽하게 제어할 수 있다.
  • Autopilot는 Standard이후에 생겨난 작업 모드인데 클러스터 관리 비용을 줄이고 완전 관리형 제어영역과 노드 자동화라는 장점이 있다. (Standard보다 개발자가 관리해야하는 영역이 더 줄어든다고 생각하면 된다)

더 자세한 내용은 공식문서를 첨부한다 ==> 바로가기

  1. Pod 및 클러스터 자동 확장

GKE는 완전 관리형 서비스로 CPU사용률 또는 커스텀 측정항목을 기준으로 수평형 Pod 자동확장을 실행할 수 있다. 즉 서비스에 사용자가 많아 트래픽이 몰리는 경우 쿠버네티스는 자동으로 Pod를 확장해서 트래픽을 감당하고 트래픽이 줄어들면 다시 Pod의 숫자를 감소시킨다.

쿠버네티스의 동작

image

쿠버네티스는 Ingress와 Service Controller 설정을 통해 Load Balancing을 자동으로 생성해준다.

Ingress및 Service Controller는 GKE 네트워크 리소스를 감시하고 부하 분산(Load Balancing)을 배포한다. 컨트롤러는 환경 및 트래픽 변경사항을 기준으로 부하 분산기와 백엔드를 계속 관리하게 된다.

따라서 GKE는 부하 분산은 개발자 중심의 단순한 인터페이스로 동적 부하 분산 역할을 하게 된다.

컨테이너 기반 부하 분산

image 위에서 설명한 Load BAlancing에서 어떻게 부하분산이 처리되는지 알아보자.

Ingress

Ingress는 클러스터 외부의 HTTP 혹은 HTTPS 호출에 대해 클러스터 내의 서비스로 routing rule에 의해 연결해주는 기능을 담당하고 있다.

image

Ingress에 외부에서 연결할 수 있는 URL을 통해 load balancer에서 트래픽 부하를 부산하고 SSL/TLS처리 등을 하고 있다.

image

위 그림을 보면 GKE 의 Ingress로 Nginx를 사용하도록 설정할 수 있다. Github 저장소

참고 및 이미지 출처