GKE의 부하 분산 정보


이 페이지에서는 Google Kubernetes Engine (GKE)에서 Google Cloud 부하 분산기를 만들고 관리하는 방법을 간략하게 설명합니다. Google Cloud에서 사용할 수 있는 부하 분산기 유형에 대한 자세한 내용은 Google Cloud 부하 분산기 유형을 참고하세요.

이 페이지는 조직의 네트워크를 설계하는 클라우드 설계자 및 네트워킹 전문가를 대상으로 합니다. Google Cloud 콘텐츠에서 참조하는 일반적인 역할 및 예시 태스크에 대해 자세히 알아보려면 일반 GKE Enterprise 사용자 역할 및 태스크를 참고하세요.

이 가이드에서는 다음 사항을 잘 알고 있다고 가정합니다.

  • Google Cloud 부하 분산기 유형
  • 레이어 4 (네트워크 부하 분산기) 부하 분산기와 레이어 7(애플리케이션 부하 분산기) 부하 분산기의 차이점

GKE에서 부하 분산기를 만드는 방법

클러스터 외부 (외부 사용자) 또는 비공개 네트워크 내부 (내부 사용자)에서 애플리케이션에 액세스할 수 있도록 하려면 게이트웨이, 인그레스, 서비스 API를 사용하여 부하 분산기를 프로비저닝하여 애플리케이션을 노출하면 됩니다. 또는 부하 분산기 구성요소를 직접 만들고 GKE에서 부하 분산기를 클러스터의 포드에 연결하는 네트워크 엔드포인트 그룹 (NEG)을 관리하도록 할 수 있습니다.

게이트웨이

GKE 게이트웨이 컨트롤러는 Cloud Load Balancing을 위한 Kubernetes Gateway API를 구현한 Google의 제품입니다. Gateway API는 서비스 메시와 인그레스 컨트롤러가 Kubernetes에서 애플리케이션을 노출하는 방식을 표준화하는 것을 목표로 하는 오픈소스 프로젝트입니다. 인그레스 리소스의 후속 리소스로, 더 표현력이 높고 유연하며 확장 가능하도록 설계되었습니다.

GKE 게이트웨이 컨트롤러는 계층 7 애플리케이션 부하 분산기를 구성하여 클러스터에서 실행되는 애플리케이션에 HTTP(S) 트래픽을 노출하는 데 사용됩니다.

권장사항:

Gateway API를 사용하여 부하 분산기를 구현합니다.

인그레스

GKE 인그레스 컨트롤러는 Google의 인그레스 API 구현입니다. Ingress API를 사용하면 클러스터에서 실행되는 서비스에 대한 외부 액세스를 관리할 수 있습니다. GKE에서 인그레스 리소스를 만들면 컨트롤러는 HTTP 또는 HTTP(S) 트래픽이 클러스터에서 실행되는 애플리케이션에 도달하도록 허용하는 레이어 7 애플리케이션 부하 분산기를 자동으로 구성합니다.

GKE Gateway는 고급 트래픽 관리, 멀티프로토콜 지원 또는 향상된 멀티테넌시가 필요한 새 배포 및 애플리케이션에 권장됩니다. 그러나 GKE 인그레스는 더 간단한 HTTP/HTTPS 라우팅 시나리오에 적합한 옵션입니다. 특히 Gateway API로 이전하는 이점이 아직 노력보다 크지 않은 기존 구성에 적합합니다.

LoadBalancer 서비스

Service API를 사용하면 클러스터에서 포드로 실행되는 애플리케이션을 외부 또는 내부 트래픽에 노출할 수 있습니다. LoadBalancer 유형의 서비스를 만들면 GKE는 서비스 매니페스트의 매개변수를 기반으로 레이어 4 (TCP/UDP) 패스스루 네트워크 부하 분산기를 자동으로 만듭니다.

패스 스루 네트워크 부하 분산기에서 트래픽이 백엔드 VM에 도달하면 원래 소스 및 대상 IP 주소, 통신 프로토콜 (예: TCP 또는 UDP), 포트 번호 (프로토콜에서 사용하는 경우)가 동일하게 유지됩니다. 즉, 트래픽이 백엔드 VM 또는 포드로 직접 전달되며 부하 분산기는 연결을 종료하지 않습니다. 백엔드 서비스는 연결 종료를 처리하고 클라이언트에서 서비스로의 트래픽이 원활하게 흐르도록 합니다.

가중치가 적용된 부하 분산

VPC 네트워크 외부의 클라이언트와 Google Cloud VM이 액세스할 수 있는 외부 LoadBalancer 서비스를 구성한 경우 가중치 부하 분산을 사용 설정할 수 있습니다. 가중치 부하 분산은 각 GKE 노드의 서빙 포드 수를 기준으로 트래픽을 분산하므로 서빙 포드가 더 많은 노드는 포드가 더 적은 노드에 비해 더 많은 비율의 트래픽을 수신합니다.

독립형 NEG

GKE에서 부하 분산기를 관리하는 또 다른 방법은 부하 분산기 구성요소를 직접 만들고 GKE에서 NEG를 관리하도록 하는 것입니다. 이러한 유형의 부하 분산기를 프록시 네트워크 부하 분산기라고 합니다. NEG는 부하 분산을 위해 백엔드 엔드포인트 그룹 (예: 포드)을 나타내는 방법입니다.

이 유형의 부하 분산기는 TCP 트래픽 전용입니다. 프록시 네트워크 부하 분산기는 VPC 네트워크 또는 다른 클라우드 환경의 백엔드로 TCP 트래픽을 배포합니다. 트래픽은 부하 분산 레이어에서 종료됩니다. 그런 다음 부하 분산기는 가장 가까운 사용 가능한 백엔드에 새 TCP 연결을 설정하여 트래픽을 전달합니다.

컨테이너 기반 부하 분산이란 무엇인가요?

컨테이너 기반 부하 분산은 GCE_VM_IP_PORT NEG를 사용하여 노드가 아닌 개별 포드의 IP 주소에 트래픽을 직접 균등하게 분산하는 방법입니다. GCE_VM_IP_PORT NEG를 사용하면 Compute Engine 가상 머신 (VM)의 기본 내부 IP 주소 또는 VM의 구성된 별칭 IP 범위 중 하나의 IP 주소를 사용하여 백엔드 엔드포인트를 지정할 수 있습니다.

컨테이너 기반 부하 분산은 게이트웨이, 인그레스, 독립형 NEG를 비롯한 모든 GKE 관리 레이어 7 부하 분산기에 사용됩니다. LoadBalancer 서비스는 컨테이너 기반 부하 분산을 사용하지 않습니다. 하지만 가중치가 적용된 부하 분산을 사용 설정하면 비슷한 기능을 사용할 수 있습니다.

컨테이너 기반 부하 분산은 포드를 직접 타겟팅하므로 네트워크 성능 개선, 상태 점검 개선 등 여러 이점이 있습니다. 자세한 내용은 컨테이너 기반 부하 분산을 참고하세요.

요약 표

다음 표를 사용하여 부하 분산 구성을 계획하세요.

부하 분산기 유형 선택

다음 표에는 지정된 리소스 (게이트웨이, 인그레스 또는 LoadBalancer 서비스)에 생성되는 부하 분산기 유형이 나와 있습니다.

Kubernetes 리소스 생성된 부하 분산기 유형
애플리케이션 부하 분산기 패스 스루 네트워크 부하 분산기
게이트웨이
인그레스
LoadBalancer 서비스

부하 분산기를 만드는 방법 선택

다음 표에는 선택한 부하 분산기를 만들기 위한 GKE의 옵션이 나와 있습니다.

부하 분산기 유형 선택한 부하 분산기를 만드는 방법
게이트웨이 인그레스 LoadBalancer 서비스 독립형 NEG
전역 외부 애플리케이션 부하 분산기
기존 외부 애플리케이션 부하 분산기
리전 외부 애플리케이션 부하 분산기
리전별 내부 애플리케이션 부하 분산기
리전 간 내부 애플리케이션 부하 분산기
프록시 네트워크 부하 분산기
(모든 유형)
패스 스루 네트워크 부하 분산기
(내부 및 외부)

다음 단계