이 페이지에서는 LoadBalancer 서비스 동작 및 구성을 제어하는 서비스 매니페스트의 파라미터에 대해 설명합니다. 이 페이지를 읽기 전에 Google Kubernetes Engine(GKE) LoadBalancer 서비스 개념을 숙지해야 합니다.
서비스 파라미터
GKE는 LoadBalancer 서비스에서 다음 매개변수를 지원합니다.
| 매개변수 | 서비스 필드 및 설명 | 내부 | 외부 | 버전 지원 |
|---|---|---|---|---|
| 내부 패스 스루 네트워크 부하 분산기 |
내부 패스 스루 네트워크 부하 분산기를 만들도록 GKE에 지시합니다. 다음 중 하나에 해당하는 경우 부하 분산기에
그 외의 모든 상황에서 부하 분산기는 인스턴스 그룹 백엔드를 사용합니다. 자세한 내용은 노드 그룹화를 참조하세요. |
클러스터에서 GKE 버전 1.33.1-gke.1779000 이상을 사용하고 GKE 하위 집합이 사용 설정된 경우 |
||
| 백엔드 서비스 기반 리전 외부 패스 스루 네트워크 부하 분산기 |
리전 외부 패스 스루 네트워크 부하 분산기를 만들도록 GKE에 지시합니다. 다음 중 하나라도 해당하면 부하 분산기에
그 외의 모든 상황에서 부하 분산기는 인스턴스 그룹 백엔드를 사용합니다. 자세한 내용은 노드 그룹화를 참조하세요. |
클러스터에서 GKE 버전 1.33.1-gke.1779000~1.36을 사용하는 경우 |
||
| 가중치가 적용된 부하 분산 | networking.gke.io/weighted-load-balancing: "pods-per-node"
더 많은 서빙 포드를 보유한 노드가 더 적은 서빙 포드를 보유한 노드보다 더 많은 신규 연결을 수신할 수 있도록 허용합니다. |
GKE 1.31.0+ | ||
| 내부 트래픽 정책 | spec.internalTrafficPolicy
이 매개변수는 GKE Dataplane V2를 실행하는 클러스터에는 지원되지 않습니다. |
GKE 1.22+ | ||
| 외부 트래픽 정책 | spec.externalTrafficPolicy
부하 분산기 상태 점검을 통과하는 노드와 패킷이 클러스터에서 준비 및 제공 포드로 라우팅되는 방법을 제어합니다. GKE 하위 설정이 사용 설정된 경우 노드가 자세한 내용은 LoadBalancer 서비스 개념을 참조하세요. |
GKE 1.14+(Windows 노드 풀을 위한 1.23.4-gke.400+) | ||
| 영역 어피니티 | spec.trafficDistribution: PreferSameZone
내부 LoadBalancer 서비스에 대해 영역 어피니티를 사용 설정합니다. 영역 어피니티는 영역 일치가 가능한 경우 내부 패스 스루 네트워크 부하 분산기가 호환되는 클라이언트의 수신 트래픽을 어느 영역으로 라우팅할지를 제어합니다. 영역 어피니티를 사용하려면 GKE 하위 설정을 사용 설정해야 합니다(GKE 버전 1.36 이상부터 기본적으로 사용 설정됨). 자세한 내용은 영역 어피니티 및 트래픽 분산을 참조하세요. | GKE 1.33.3-gke.1392000 이상에서 프리뷰. GKE 버전 1.36 이상에서 정식 버전으로 제공됩니다. | ||
| 상태 점검 포트 | spec.healthCheckNodePort
LoadBalancer 서비스의 부하 분산기 상태 점검을 배포합니다. 이 매개변수는 |
지원되는 모든 버전 | ||
| 방화벽 규칙 및 소스 IP 주소 허용 목록 | spec.loadBalancerSourceRanges
GKE 및 VPC 네트워크에서 특정 소스 범위만 허용하도록 선택적 방화벽 규칙을 구성합니다.
|
지원되는 모든 버전 | ||
| 고정 IP 주소 |
부하 분산기의 전달 규칙에 할당되는 고정 IPv4 주소, 고정 IPv6 주소 범위 또는 두 가지 모두를 지정합니다. 중요한 구성 요구사항과 구현 세부정보는 공통 IP 주소 공유 시 고려사항을 참조하세요. |
|
||
| 네트워크 서비스 등급 | cloud.google.com/network-tier
GKE가 외부 전달 규칙 및 IP 주소에 사용하는 네트워크 서비스 등급을 지정합니다. 유효한 주석 값은 |
GKE 1.19 이상 | ||
| 커스텀 서브넷 | networking.gke.io/load-balancer-subnet |
(IPv6에만 적용) |
GKE 1.29 이상 추가 요구사항은 커스텀 서브넷 주석을 참조하세요. | |
| 자체 IPv6 주소 사용(BYOIPv6) | networking.gke.io/ip-collection-v6: "projects/PROJECT_ID/regions/REGION/publicDelegatedPrefixes/SUB_PREFIX_NAME"
내부 LoadBalancer 서비스의 경우 |
(단일 스택 IPv6에만 적용) |
GKE 버전 1.37.1-gke.2097000 이상 | |
| 전역 액세스 | networking.gke.io/internal-load-balancer-allow-global-access: "true"
VPC 네트워크 또는 연결된 네트워크의 모든 리전에서 클라이언트가 액세스할 수 있도록 전달 규칙의 IP 주소를 사용 설정합니다. |
GKE 1.16 이상에서 미리보기 버전. GKE 1.17.9-gke.600 이상에서 정식 버전. | ||
| 모든 포트 |
|
GKE 버전 1.18.19-gke.1400 이상 | ||
| ipFamilyPolicy |
GKE가 서비스에 IP 주소를 할당하는 방법을 정의합니다.
이중 스택 클러스터에서 단일 스택 IPv6 LoadBalancer 서비스를 만들려면 이 필드의 값을 |
버전 1.29 이상의 GKE 클러스터는 LoadBalancer 서비스에 이중 스택 네트워크를 지원합니다.
단일 스택 IPv6 LoadBalancer 서비스는 GKE 버전 1.36.0-gke.2646000 이상에서 프리뷰로 제공됩니다. |
||
| ipFamilies(선택사항) |
단일 스택 또는 이중 스택 서비스를 할당할 IP 주소 계열을 정의합니다. 다음 중 원하는 값을 사용합니다.
이중 스택 클러스터의 단일 스택 IPv6 LoadBalancer 서비스의 경우 이 필드 값을 |
버전 1.29 이상의 GKE 클러스터는 LoadBalancer 서비스에 이중 스택 네트워크를 지원합니다.
단일 스택 IPv6 LoadBalancer 서비스의 경우 GKE 버전 1.36.0-gke.2646000 이상에서 미리보기로 제공됩니다. |
상태 점검 포트
부하 분산기 상태 점검에 설명된 대로 GKE는 리전 외부 패스 스루 네트워크 부하 분산기나 내부 패스 스루 네트워크 부하 분산기를 만들 때 항상 부하 분산기 상태 점검을 배포합니다.
healthCheckNodePort 매개변수의 설정 가능 여부는 다음 externalTrafficPolicy 구성에 따라 다릅니다.
externalTrafficPolicy |
상태 점검 포트 |
|---|---|
Cluster |
|
Local |
|
방화벽 규칙 및 소스 IP 주소 허용 목록
클러스터에서 LoadBalancer 서비스에 대해 VPC 방화벽 규칙 만들기를 생략하도록 설정하지 않은 경우, GKE는 각 서비스마다 인그레스 허용 VPC 방화벽 규칙을 만듭니다.
자동으로 생성되는 각 방화벽 규칙의 특성은 다음과 같습니다.
- 방화벽 규칙의 방향은 인그레스이며 동작은 허용(allow)입니다. GKE에는 Google Cloud의 암시적 인그레스 거부 방화벽 규칙이 존재하기 때문에, GKE는 인그레스 방화벽 규칙을 만들 때 허용 목록 모델을 사용합니다.
- GKE는 방화벽 규칙의 프로토콜 및 목적지 포트를 서비스의
spec.ports[]목록에 지정된 포트로 설정합니다. - GKE는 LoadBalancer 서비스에 대해 방화벽 규칙을 구성할 때 대상 파라미터를 LoadBalancer의 가상 IP 주소(부하 분산기의 전달 규칙)로 명시적으로 설정합니다.
- GKE는 클러스터의 모든 노드를 포함하도록 방화벽 규칙의 대상 파라미터를 설정합니다.
- 서비스에
spec.loadBalancerSourceRanges[]가 포함된 경우 GKE는 방화벽 규칙의 소스 파라미터를 해당 목록의 IP 주소로 설정합니다. 또한 GKE는 부하 분산된 트래픽의 소스 IP 주소를 제한하기 위해 노드 운영체제 내부에 경로 및 규칙을 구성합니다. 이 작업은 GKE Dataplane V2를 사용하지 않는 클러스터에서는kube-proxy및iptables를 사용하고, GKE Dataplane V2를 사용하는 클러스터에서는cilium-agent및 eBPF 규칙을 사용해 수행됩니다. 서비스에loadBalancerSourceRanges[]가 포함되지 않은 경우 GKE는 방화벽 규칙의 소스 파라미터를 모든 IP 주소(0.0.0.0/0)로 설정합니다. - IPv6 LoadBalancer 서비스의 경우
spec.loadBalancerSourceRanges[]필드에 IPv6 CIDR 범위(예:2001:db8::/32범위)를 지정합니다. GKE는 서비스의 IPv6 전달 규칙에 대해 별도의 방화벽 규칙을 만듭니다. 서비스에loadBalancerSourceRanges[]필드가 포함되지 않은 경우 GKE는 방화벽 규칙의 소스 파라미터를 모든 IPv6 주소(::/0)로 설정합니다.
고정 IP 주소
고정 IP 주소를 만들고 GKE가 해당 고정 주소를 부하 분산기의 전달 규칙에 할당하도록 구성할 수 있습니다. 고정 IP 주소를 사용하면 LoadBalancer 서비스를 변경해도 부하 분산기의 IP 주소가 동일하게 유지됩니다.
고정 IP 주소가 없으면 LoadBalancer 서비스를 업데이트할 때 GKE가 부하 분산기 전달 규칙에 다른 IP 주소를 할당할 수 있습니다. 전달 규칙의 IP 주소는 서비스의 spec.clusterIP 주소와 동일하지 않습니다. 서비스의 ClusterIP 주소는 LoadBalancer 서비스를 업데이트해도 변경되지 않습니다.
고정 IP 주소 파라미터
LoadBalancer 서비스에가 고정 IP 주소를 사용하도록 지시하려면 spec.loadBalancerIP 매개변수 또는 networking.gke.io/load-balancer-ip-addresses 주석을 사용합니다. GKE 버전 1.29 이상에서는 서비스 매니페스트에 파라미터와 주석이 모두 포함된 경우 주석이 spec.loadBalancerIP보다 우선합니다.
| 매개변수 또는 주석 및 값 | 요구사항 및 기능 |
|---|---|
spec.loadBalancerIP:IPv4_ADDRESS
|
IPv4 전용 내부 LoadBalancer 서비스에 고정 내부 IPv4 주소를 지정할 수 있습니다. IPv4 전용 외부 LoadBalancer 서비스에 고정 외부 IPv4 주소를 지정할 수 있습니다. 이 파라미터는 지원되는 모든 GKE 버전에서 작동합니다. |
networking.gke.io/load-balancer-ip-addresses:IP_ADDRESS_RESOURCE_NAME
|
IPv4 전용, IPv6 전용, 이중 스택 내부 및 외부 LoadBalancer 서비스에 대해 고정 IPv4 주소, 고정 IPv6 주소 범위, 또는 두 가지 모두를 지정할 수 있습니다. 이 주석은 GKE 1.29 이상에서만 지원되며, 다음 추가 요구사항을 충족해야 합니다.
|
공통 IP 주소 공유 시 고려사항
이 섹션의 표에 표시된 대로 각 부하 분산기의 전달 규칙에 IP 주소, 프로토콜, 포트 사양, 네트워크 서비스 등급 사양의 고유한 조합이 사용되는 경우 둘 이상의 LoadBalancer 서비스가 동일한 고정 IP 주소를 참조할 수 있습니다. 또한 다음 사항도 적용됩니다.
고정 IPv6 주소는 실제로
/96IPv6 주소 범위이지만 GKE는/96범위의 첫 번째 IPv6 주소(/128)에서만 패킷을 허용하도록 노드를 구성합니다.두 개 이상의 내부 LoadBalancer 서비스가 동일한 내부 IPv4 주소를 사용하려면 해당 고정 IP 주소는
SHARED_LOADBALANCER_VIP용도로 생성되어야 합니다.
| 내부 LoadBalancer 서비스 | 외부 LoadBalancer 서비스 | |
|---|---|---|
| 포트 사양 | 내부 패스 스루 네트워크 부하 분산기의 전달 규칙은 최대 5개까지 개별 포트 번호를 지원하며, 모든 포트를 사용하도록 구성할 수도 있습니다. 내부 LoadBalancer 서비스에 지정된 동일한 IP 주소와 프로토콜을 사용하는 전달 규칙은 포트가 겹치면 안 됩니다. 즉, 동일한 IP 주소, 프로토콜, 포트를 공유하는 내부 LoadBalancer 서비스를 여러 개 만들 수 없습니다. 예를 들면 다음과 같습니다.
자세한 내용은 공통 IP 주소를 사용하는 내부 패스 스루 네트워크 부하 분산기 전달 규칙을 참조하세요. |
1.37 이전의 GKE 버전을 실행하는 클러스터의 경우 LoadBalancer 서비스 매니페스트에 대상 풀 기반 리전 외부 패스 스루 네트워크 부하 분산기의 전달 규칙은 연속된 포트 범위를 사용해야 합니다. 연속된 포트 범위에는 서비스에 필요한 모든 포트가 포함되지만 서비스에서 사용되지 않는 추가 포트가 이 범위에 포함될 수도 있습니다. 예를 들어 서비스 매니페스트에서 포트 80 및 443을 지정하는 대상 풀 기반 리전 외부 패스 스루 네트워크 부하 분산기로 구동되는 외부 LoadBalancer 서비스는 포트 범위가 80~443인 부하 분산기 전달 규칙을 사용합니다. 이렇게 포트 범위가 할당되면 다른 외부 LoadBalancer 서비스에서 포트 80, 443, 80~443 사이의 포트를 사용하지 못합니다. GKE는 버전 1.37 이상에서 기본적으로 백엔드 서비스 기반 리전 외부 패스 스루 네트워크 부하 분산기를 만듭니다. 이전 버전에서는 LoadBalancer 서비스 매니페스트에 |
| 네트워크 서비스 등급 | 구성할 수 없습니다. 내부 주소는 항상 프리미엄 등급입니다. | 고정 리전 외부 IPv4 주소에 이 구성을 적용할 수 있습니다. 고정 리전 외부 IPv6 주소 범위는 프리미엄 등급에서만 만들 수 있습니다. 고정 외부 IP 주소의 네트워크 서비스 등급 사양은 다음 중 하나와 일치해야 합니다.
특별히 구성하지 않은 한 프로젝트의 기본 등급은 프리미엄입니다. |
IP 주소 예약
GKE는 spec.loadBalancerIP 또는 networking.gke.io/load-balancer-ip-addresses 주석을 통해 구성된 고정 IP 주소를 예약하지 않습니다.
즉, 서비스에 할당하는 IP 주소는 서비스가 삭제되었을 때 해제될 수 있습니다.
IP 주소를 예약된 상태로 유지하려면 프로젝트에서 주소 리소스를 수동으로 만들어야 합니다. 고정 IP 주소에는 다음 속성이 있어야 합니다.
- 리전 전용입니다.
- 클러스터와 동일한 리전에 있어야 합니다.
- LoadBalancer 서비스와 동일한 네트워크 서비스 등급에 있어야 합니다.
- LoadBalancer 이름, 프리픽스(예:
k8s-), 서비스 UUID를 사용하지 않는 이름을 사용합니다.
주소를 직접 예약하지 않으면 프로젝트 로그에 주소 리소스가 생성되었다가 곧바로 삭제된 항목이 기록될 수 있습니다. 이는 정상적인 서비스 프로비저닝 과정의 일부이며 예상되는 동작입니다.
LoadBalancer 서브넷
클러스터와 동일한 리전 및 VPC 네트워크에 있는 커스텀 서브넷에서 LoadBalancer 서비스가 임시 또는 고정 IPv4 주소, IPv6 주소 범위, 또는 두 가지 모두를 사용할 수 있도록 구성할 수 있습니다. LoadBalancer 서비스를 위해 커스텀 서브넷을 사용하는 목적은 다음과 같습니다.
- 동일한 VPC 네트워크 및 리전에 있는 두 개 이상의 GKE 클러스터에서 내부 LoadBalancer 서비스로 생성된 내부 패스 스루 네트워크 부하 분산기들을 하나의 그룹으로 묶을 수 있습니다.
- 클러스터의 노드 IPv4 주소와는 별도로 IPv4 주소를 가지는 내부 패스 스루 네트워크 부하 분산기를 사용하는 내부 LoadBalancer 서비스를 만들 수 있습니다.
- 클러스터의 노드 및 포드 IPv6 주소와는 별도로 IPv6 주소 범위를 가지는 내부 패스 스루 네트워크 부하 분산기를 사용하는 내부 LoadBalancer 서비스를 만들 수 있습니다. 클러스터의 서브넷에 외부 IPv6 주소 범위가 있는 경우 내부 LoadBalancer 서비스를 지원하려면 커스텀 LoadBalancer 서브넷이 필수입니다.
클러스터와 동일한 리전 및 VPC 네트워크에 있는 커스텀 서브넷에서 임시 또는 고정 IPv6 주소 범위를 사용하도록 외부 LoadBalancer 서비스를 구성할 수 있습니다. 커스텀 서브넷을 사용하여 리전 외부 패스 스루 네트워크 부하 분산기에 클러스터의 노드 및 포드 IPv6 주소와 별도의 IPv6 주소 범위가 있는 외부 LoadBalancer 서비스를 만듭니다. 클러스터의 서브넷에 내부 IPv6 주소 범위가 있는 경우 외부 LoadBalancer 서비스를 지원하려면 커스텀 LoadBalancer 서브넷이 필수입니다.
내부 패스 스루 네트워크 부하 분산기 및 리전 외부 패스 스루 네트워크 부하 분산기의 IPv6 주소는 일반적으로 VPC 네트워크의 서브넷 범위에서 가져옵니다. GKE 버전 1.37.1-gke.2097000 이상의 단일 스택 IPv6 외부 LoadBalancer 서비스의 경우 IPv6 주소를 BYOIPv6 공개 위임 프리픽스에서 가져올 수 있습니다. 주소가 서브넷에서 제공되는 경우 해당 서브넷의 IPv6 액세스 유형이 만드는 부하 분산기 유형과 일치해야 합니다. 내부 LoadBalancer 서비스에는 내부 IPv6 주소 범위(BYOIPv6 프리픽스에서 프로비저닝된 서브넷 포함)가 있는 서브넷이 필요하고 외부 LoadBalancer 서비스에는 외부 IPv6 주소 범위가 있는 서브넷이 필요합니다. 커스텀 LoadBalancer 서브넷이 필요한 경우에 대한 요약은 IPv6 LoadBalancer 서비스를 참조하세요.
커스텀 서브넷 주석
networking.gke.io/load-balancer-subnet:
SUBNET_RESOURCE_NAME 주석을 사용하여 LoadBalancer 서비스에 커스텀 서브넷에서 임시 또는 고정 IP 주소를 사용하도록 지시합니다. 여기서 SUBNET_RESOURCE_NAME은 커스텀 서브넷의 이름입니다.
이 주석을 사용하여 IPv4 전용, IPv6 전용 또는 이중 스택 내부 LoadBalancer 서비스 또는 IPv6 전용 또는 이중 스택 외부 LoadBalancer 서비스에 커스텀 서브넷을 지정할 수 있습니다.
networking.gke.io/load-balancer-subnet 주석을 사용하려면 다음 요구사항을 충족해야 합니다.
- 클러스터는 GKE 버전 1.29 이상을 실행해야 합니다.
- 내부 LoadBalancer 서비스의 커스텀 서브넷을 지정하려면 클러스터에 GKE 하위 설정이 사용 설정되어 있어야 합니다. GKE 하위 설정은 버전 1.36 이상에서 기본적으로 사용 설정됩니다.
- 외부 LoadBalancer 서비스에 커스텀 서브넷을 지정하려면 백엔드 서비스 기반 부하 분산기를 구성해야 합니다. GKE 버전 1.37 이상에서는 이 구성이 기본 동작입니다. 이전 버전에서는 외부 LoadBalancer 서비스를 만들 때 서비스 매니페스트에
networking.gke.io/l4-regional-external값으로 설정된spec.loadBalancerClass필드를 포함해야 합니다. - 단일 스택 IPv6 클러스터(
--stack-type=ipv6플래그로 생성됨)의 경우 부하 분산기 액세스 유형이 노드 서브네트워크 액세스 유형과 다를 때 이 주석을 사용해야 합니다. 예를 들어 노드 서브네트워크가INTERNALIPv6 액세스 유형(ULA)을 사용하는 클러스터에 외부 LoadBalancer 서비스를 배포하거나 노드 서브네트워크가EXTERNALIPv6 액세스 유형(GUA)을 사용하는 클러스터에 내부 LoadBalancer 서비스를 배포할 때 이 주석을 사용합니다. 이 주석으로 지정된 서브네트워크에는 해당 부하 분산기 유형과 일치하는 IPv6 액세스 유형(EXTERNAL또는INTERNAL)이 있어야 합니다. 또는 외부 LoadBalancer 서비스가 서브넷 대신 BYOIPv6 공개 위임 프리픽스에서 IPv6 주소 범위를 가져올 수 있습니다. 이 경우 이 주석을 사용하지 마세요.
내부 LoadBalancer 서비스의 서브넷 및 IPv4 주소
아래 표에서는 IPv4 전용 또는 이중 스택 내부 LoadBalancer 서비스의 유효한 서브넷 사양 및 IPv4 주소 조합을 설명합니다.
고정 IPv4 주소
|
임시 IPv4 주소 | |
|---|---|---|
커스텀 서브넷
|
커스텀 서브넷 및 고정 IPv4 주소: 커스텀 서브넷의 기본 IPv4 주소 범위에 고정 내부 IPv4 주소가 생성되어야 합니다. | 커스텀 서브넷 및 임시 IPv4 주소: GKE는 커스텀 서브넷 기본 IPv4 주소 범위에서 할당되지 않은 내부 IPv4 주소를 사용합니다. |
| 클러스터 서브넷 | 클러스터 서브넷 및 고정 IPv4 주소: 클러스터 서브넷의 기본 IPv4 주소 범위에 고정 내부 IPv4 주소가 생성되어야 합니다. | 클러스터 서브넷 및 임시 IPv4 주소: GKE는 클러스터 서브넷 기본 IPv4 주소 범위에서 할당되지 않은 내부 IPv4 주소를 사용합니다. |
내부 LoadBalancer 서비스의 서브넷 및 IPv6 주소 범위
아래 표에서는 IPv6 전용 또는 이중 스택 내부 LoadBalancer 서비스의 유효한 서브넷 사양 및 IPv6 주소 범위 조합을 설명합니다. 내부 패스 스루 네트워크 부하 분산기 IPv6 전달 규칙이 내부 /96 IPv6 주소 범위를 사용하더라도 GKE는 대상이 전달 규칙의 /96 범위의 첫 번째 IPv6 주소(/128)와 일치하는 패킷만 허용하도록 노드를 구성합니다.
고정 IPv6 주소 범위
|
임시 IPv6 주소 범위 | |
|---|---|---|
커스텀 이중 스택 또는 IPv6 전용 서브넷
|
커스텀 서브넷 및 고정 IPv6 주소 범위: 커스텀 서브넷의 내부 /64 IPv6 주소 범위에서 고정 내부 /96 IPv6 주소 범위가 생성되어야 합니다.
|
커스텀 서브넷 및 임시 IPv6 주소 범위: GKE는 커스텀 서브넷의 내부 /64 IPv6 주소 범위에서 할당되지 않은 내부 /96 IPv6 주소 범위를 사용합니다.
|
클러스터 이중 스택 또는 IPv6 전용 서브넷
|
클러스터 서브넷 및 고정 IPv6 주소 범위: 클러스터 서브넷의 내부 /64 IPv6 주소 범위에서 고정 내부 /96 IPv6 주소 범위가 생성되어야 합니다.
|
클러스터 서브넷 및 임시 IPv6 주소 범위: GKE는 클러스터 서브넷의 내부 /64 IPv6 주소 범위에서 할당되지 않은 내부 /96 IPv6 주소 범위를 사용합니다.
|
외부 LoadBalancer 서비스의 서브넷 및 IPv4 주소
IPv4 전용 및 이중 스택 외부 LoadBalancer 서비스의 경우 외부 IPv4 주소(고정 외부 IPv4 주소 또는 임시 외부 IPv4 주소)를 서브넷에서 가져오지 않습니다.
외부 LoadBalancer 서비스의 서브넷 및 IPv6 주소 범위
다음 표에서는 단일 스택 IPv6 또는 이중 스택 외부 LoadBalancer 서비스의 유효한 서브넷 또는 하위 프리픽스 및 IPv6 주소 범위 조합을 설명합니다. 리전 외부 패스 스루 네트워크 부하 분산기 IPv6 전달 규칙이 외부 /96 IPv6 주소 범위를 사용하더라도 GKE는 대상이 전달 규칙의 /96 범위의 첫 번째 IPv6 주소(/128)와 일치하는 패킷만 허용하도록 노드를 구성합니다.
고정 IPv6 주소 범위
|
임시 IPv6 주소 범위 | |
|---|---|---|
커스텀 이중 스택 또는 IPv6 전용 서브넷
|
커스텀 서브넷 및 고정 IPv6 주소 범위: 고정 외부 /96 IPv6 주소 범위가 커스텀 서브넷의 외부 /64 IPv6 주소 범위에서 생성되어야 합니다. 고정 외부 IPv6 주소 범위는 프리미엄 등급에서만 만들 수 있습니다.
|
커스텀 서브넷 및 임시 IPv6 주소 범위: GKE는 커스텀 서브넷의 외부 /64 IPv6 주소 범위에서 할당되지 않은 외부 /96 IPv6 주소 범위를 사용합니다.
|
클러스터 이중 스택 또는 IPv6 전용 서브넷
|
클러스터 서브넷 및 고정 IPv6 주소 범위: 고정 외부 /96 IPv6 주소 범위가 클러스터 서브넷의 외부 /64 IPv6 주소 범위에서 생성되어야 합니다. 고정 외부 IPv6 주소 범위는 프리미엄 등급에서만 만들 수 있습니다.
|
클러스터 서브넷 및 임시 IPv6 주소 범위: GKE는 클러스터 서브넷의 외부 /64 IPv6 주소 범위에서 할당되지 않은 외부 /96 IPv6 주소 범위를 사용합니다.
|
BYOIPv6 공개 위임 프리픽스
|
BYOIPv6 프리픽스 및 고정 IPv6 주소 범위: --endpoint-type=NETLB 및 --ip-collection 플래그를 사용하여 리전 하위 프리픽스에서 고정 외부 /96 IPv6 주소 범위를 예약하고 networking.gke.io/load-balancer-ip-addresses 주석을 사용하여 고정 주소를 참조해야 합니다. 원하는 경우 networking.gke.io/ip-collection-v6 주석을 포함할 수도 있습니다. 이 주석은 고정 주소를 예약한 것과 동일한 하위 프리픽스를 참조해야 합니다.
|
BYOIPv6 프리픽스 및 임시 IPv6 주소 범위: networking.gke.io/ip-collection-v6 주석을 사용하여 리전 하위 프리픽스를 지정합니다.
GKE는 하위 프리픽스에서 사용 가능한 외부 /96 IPv6 주소 범위를 할당합니다.
|
전역 액세스
networking.gke.io/internal-load-balancer-allow-global-access 주석이 false이거나 내부 LoadBalancer 서비스에 지정되지 않은 경우 GKE는 전달 규칙에 전역 액세스가 사용 중지된 내부 패스 스루 네트워크 부하 분산기를 만듭니다. 전역 액세스가 사용 중지된 경우 부하 분산기에 액세스해야 하는 클라이언트는 동일한 리전 및 VPC 네트워크 또는 클러스터의 VPC 네트워크에 연결된 네트워크에 있어야 합니다.
networking.gke.io/internal-load-balancer-allow-global-access 주석이 내부 LoadBalancer 서비스의 true인 경우 GKE는 내부 패스 스루 네트워크 부하 분산기의 전달 규칙에서 전역 액세스 옵션을 사용 설정합니다.
VPC 네트워크의 모든 리전 또는 클러스터의 VPC 네트워크에 연결된 네트워크에 있는 클라이언트는 부하 분산기에 액세스할 수 있습니다.
연결된 네트워크의 클라이언트에 전역 액세스를 적용하는 방법에 대한 자세한 내용은 다음을 참조하세요.
- 내부 패스 스루 네트워크 부하 분산기 문서의 클라이언트 액세스
- 내부 패스 스루 네트워크 부하 분산기 및 연결된 네트워크
모든 포트 전달 규칙
내부 패스 스루 네트워크 부하 분산기의 전달 규칙은 5개의 고유 포트 번호 또는 모든 포트를 지원합니다.
GKE에서 내부 LoadBalancer 서비스는 서비스의 spec.ports[].port에 있는 최대 100개의 포트만 지원할 수 있습니다. 내부 LoadBalancer 서비스가 최대 5개까지 포트를 정의하면 전달 규칙에 해당 포트가 포함됩니다. 하지만 서비스가 포트를 5개 넘게 지정하면 전달 규칙이 모든 포트를 매칭하도록 자동으로 구성됩니다. 모든 포트를 사용하도록 전달 규칙을 구성하면 GKE는 서비스의 spec.ports[].port에 구성된 특정 포트에 대한 인그레스 허용 방화벽 규칙만 만듭니다.
내부 패스 스루 네트워크 부하 분산기 전달 규칙과 유효한 포트 사양에 대한 자세한 내용은 전달 규칙 및 포트 사양을 참조하세요.
IPv4/IPv6 이중 스택 LoadBalancer 서비스
단일 스택(IPv4 전용 또는 IPv6 전용) 또는 이중 스택일 수 있는 내부 또는 외부 LoadBalancer 서비스를 만들 수 있습니다. 단일 스택 LoadBalancer 서비스는 IPv4 주소 또는 IPv6 주소로 단일 전달 규칙을 만듭니다. 이중 스택 LoadBalancer 서비스는 IPv4 주소 및 IPv6 주소를 사용하여 2개의 전달 규칙을 만듭니다. IPv4/IPv6 이중 스택 LoadBalancer 서비스를 만들려면 IPv4/IPv6 이중 스택 클러스터에 배포하고 사용하는 부하 분산기 유형에 따라 다음 중 하나를 완료합니다.
- 내부 LoadBalancer 서비스의 경우 GKE 하위 설정이 사용 설정되어 있어야 합니다. GKE 하위 설정은 기본적으로 단일 스택 IPv6 및 이중 스택 클러스터에 사용 설정됩니다. 자세한 내용은 내부 부하 분산기 하위 설정 사용을 참조하세요.
- 외부 LoadBalancer 서비스의 경우 백엔드 서비스 기반 리전 외부 패스 스루 네트워크 부하 분산기를 사용해야 합니다. 자세한 내용은 백엔드 서비스 기반 외부 네트워크 부하 분산기를 참조하세요.
각 서비스에 대해 ipFamilyPolicy 및 ipFamilies 사양을 정의할 수 있습니다. 자세한 내용은 IPv4/IPv6 이중 스택을 참조하세요.
이중 스택 LoadBalancer 서비스 제한사항
- IPv6 주소를 사용하는 LoadBalancer 서비스는 스택 유형이
ipv4인 클러스터에서 지원되지 않습니다. 자세한 내용은 VPC 기반 클러스터에 이중 스택 IP 주소 사용 또는 단일 스택 IPv6 클러스터 구성을 참조하세요. 단일 스택 주소로 만든 LoadBalancer 서비스는 이중 스택 서비스로 업그레이드할 수 없습니다.
이중 스택 주소로 만든 LoadBalancer 서비스는 다음 조건에 따라 단일 스택으로 변경될 수 있습니다.
- ipFamilies
["IPv4","IPv6"]가 포함된 서비스는 ipFamiliesIPv4가 있는 서비스로 변경할 수 있지만IPv6로는 변경할 수 없습니다. - ipFamilies
["IPv6","IPv4"]가 포함된 서비스는 ipFamiliesIPv6가 있는 서비스로 변경할 수 있지만IPv4로는 변경할 수 없습니다.
- ipFamilies
IPv6 LoadBalancer 서비스
IPv6 LoadBalancer 서비스는 전달 규칙에 IPv6 주소가 있는 LoadBalancer 서비스입니다. 서비스는 단일 스택 IPv6이거나 IPv4 및 IPv6 전달 규칙이 모두 있는 이중 스택일 수 있습니다. 이중 스택 클러스터에서 단일 스택 IPv6 LoadBalancer 서비스를 만들려면 spec.ipFamilyPolicy 필드 값을 SingleStack로 설정하고 spec.ipFamilies 필드 값을 IPv6로 설정합니다. IPv6 전용 클러스터에서는 이러한 값이 기본값이며 생략할 수 있습니다.
IPv6 LoadBalancer 서비스는 항상 GCE_VM_IP NEG 백엔드를 사용하며 IPv6 주소는 VPC 네트워크의 서브넷 범위 또는 자체 IPv6 사용(BYOIPv6) 공개 위임 프리픽스에서 가져옵니다.
단일 스택 IPv6 LoadBalancer 서비스는 GKE 버전 1.36.0-gke.2646000 이상에서 프리뷰로 제공됩니다.
IPv6 LoadBalancer 서비스 제한사항
spec.loadBalancerIP필드를 사용하여 IPv6 주소를 지정할 수 없습니다. 대신networking.gke.io/load-balancer-ip-addresses주석을 사용하세요.- 고정 외부 IPv6 주소 범위를 포함한 외부 IPv6 LoadBalancer 서비스는 프리미엄 등급에서만 지원됩니다. GKE는
cloud.google.com/network-tier: Standard주석을 설정하는 외부 IPv6 LoadBalancer 서비스를 거부합니다. - IPv4 주소를 사용하도록 단일 스택 IPv6 LoadBalancer 서비스를 변경할 수 없습니다.
spec.ipFamilies필드 값을IPv4로 설정하거나spec.ipFamilyPolicy필드 값을RequireDualStack로 설정하면 거부됩니다. - GKE 버전 1.37.1-gke.2097000 이상에서 단일 스택 IPv6 외부 LoadBalancer 서비스에만
networking.gke.io/ip-collection-v6주석을 사용할 수 있습니다. GKE는 이중 스택 서비스, IPv4 서비스 또는 내부 LoadBalancer 서비스에 대해networking.gke.io/ip-collection-v6주석을 지원하지 않으며 이 주석을networking.gke.io/load-balancer-subnet주석과 결합할 수 없습니다.
부하 분산기의 서브넷 선택
부하 분산기의 IP 주소를 제공하는 서브넷의 IPv6 액세스 유형은 부하 분산기 유형과 일치해야 합니다. 클러스터의 서브넷에 이미 필요한 액세스 유형이 있는 경우 GKE는 클러스터의 서브넷을 사용합니다. 그렇지 않으면 필요한 액세스 유형으로 커스텀 LoadBalancer 서브넷을 만들고 networking.gke.io/load-balancer-subnet 주석으로 이 서브넷을 지정해야 합니다. 유일한 예외는 BYOIPv6 공개 위임 프리픽스를 사용하는 외부 LoadBalancer 서비스입니다. 이 프리픽스는 클러스터 서브넷의 액세스 유형과 관계없이 IPv6 주소 범위를 제공하기 때문입니다.
다음 표에는 부하 분산기의 IPv6 주소 범위를 제공하는 서브넷 또는 프리픽스가 요약되어 있습니다.
| LoadBalancer 서비스 유형 | 클러스터 서브넷의 IPv6 액세스 유형 | 부하 분산기의 IPv6 주소 범위 소스 |
|---|---|---|
| 내부 | INTERNAL |
클러스터의 서브넷입니다. 주석은 필요하지 않습니다. |
| 내부 | EXTERNAL |
networking.gke.io/load-balancer-subnet 주석으로 지정된 INTERNAL IPv6 액세스 유형의 커스텀 LoadBalancer 서브넷입니다. |
| BYOIPv6를 사용하는 내부 | INTERNAL 또는 EXTERNAL |
내부 IPv6 주소 범위가 INTERNAL_IPV6_SUBNETWORK_CREATION 모드의 BYOIPv6 공개 위임 프리픽스에서 제공되는 서브넷으로, networking.gke.io/load-balancer-subnet 주석으로 지정됩니다(해당 서브넷이 클러스터의 서브넷인 경우 주석이 필요하지 않음). |
| 외부 | EXTERNAL |
클러스터의 서브넷입니다. 주석은 필요하지 않습니다. |
| 외부 | INTERNAL |
networking.gke.io/load-balancer-subnet 주석으로 지정된 EXTERNAL IPv6 액세스 유형의 커스텀 LoadBalancer 서브넷입니다. |
| BYOIPv6를 사용하는 외부 (GKE 1.37.1-gke.2097000 이상) |
INTERNAL 또는 EXTERNAL |
networking.gke.io/ip-collection-v6 주석으로 지정되거나 프리픽스에서 예약된 고정 IPv6 주소로 지정된 EXTERNAL_IPV6_FORWARDING_RULE_CREATION 모드의 BYOIPv6 공개 위임 프리픽스입니다. networking.gke.io/load-balancer-subnet 주석을 지정하지 마세요. |
서브넷 및 IPv6 주소 범위의 유효한 조합은 내부 LoadBalancer 서비스의 서브넷 및 IPv6 주소 범위 및 외부 LoadBalancer 서비스의 서브넷 및 IPv6 주소 범위를 참조하세요.
자체 IPv6 주소 사용(BYOIPv6)
내부 및 외부 IPv6 LoadBalancer 서비스 모두에서 자체 IPv6 주소 사용(BYOIPv6)을 사용할 수 있습니다.
공개 위임 프리픽스에서 직접 주소를 할당하는 외부 LoadBalancer 서비스의 경우 GKE 서비스 에이전트(service-PROJECT_NUMBER@container-engine-robot.iam.gserviceaccount.com)에 특정 Identity and Access Management(IAM) 권한이 필요합니다. 공개 위임 프리픽스를 소유한 프로젝트에서 이 에이전트에 Compute 공개 IP 관리자 역할(roles/compute.publicIpAdmin)을 부여합니다. 이 역할에는 compute.publicDelegatedPrefixes.use 권한이 포함됩니다.
GKE에는 초기 서비스 생성 중과 서비스를 동기화할 때마다 이 권한이 필요합니다.
외부 LoadBalancer 서비스(GKE 버전 1.37.1-gke.2097000 이상): 단일 스택 IPv6 외부 LoadBalancer 서비스(spec.ipFamilyPolicy: SingleStack 및 spec.ipFamilies: ["IPv6"])는 공개 위임 프리픽스(PDP)의 리전 IPv6 하위 프리픽스에서 직접 외부 /96 BYOIPv6 주소 범위를 할당합니다. GKE는 서비스가 단일 스택 IPv6인 경우 단일 스택 IPv6 클러스터와 이중 스택 클러스터 모두에서 이 기능을 지원합니다. 주소 범위가 서브넷이 아닌 하위 프리픽스에서 시작되므로 클러스터의 서브넷에는 내부 또는 외부 IPv6 액세스 유형이 있을 수 있습니다.
리전 IPv6 하위 프리픽스는 다음 요구사항을 충족해야 합니다.
EXTERNAL_IPV6_FORWARDING_RULE_CREATION모드로 구성됨- 할당 가능한 프리픽스 길이
/96로 구성됨 ANNOUNCED상태
임시 외부 BYOIPv6 주소 범위를 할당하려면 networking.gke.io/ip-collection-v6 주석에 하위 프리픽스를 지정합니다(전체 리소스 URL 또는 부분 리소스 경로 projects/PROJECT_ID/regions/REGION/publicDelegatedPrefixes/SUB_PREFIX_NAME로 제공됨). 또는 하위 프리픽스에서 예약한 고정 외부 BYOIPv6 주소 범위를 사용하려면 networking.gke.io/load-balancer-ip-addresses 주석을 사용합니다.
networking.gke.io/ip-collection-v6 주석을 변경하면 GKE가 새 프리픽스의 새 주소로 IPv6 전달 규칙을 다시 만들어 트래픽이 잠시 중단됩니다. 주석을 삭제하면 서비스가 외부 IPv6 주소 범위가 있는 서브넷의 Google 제공 주소로 되돌아갑니다. 클러스터 서브넷에서 내부 IPv6 주소 범위를 사용하는 경우 오류를 방지하려면 networking.gke.io/load-balancer-subnet 주석을 동시에 추가해야 합니다. 자세한 내용은 외부 LoadBalancer 서비스에 사용자 IPv6 주소 사용(BYOIPv6)을 참조하세요.
내부 LoadBalancer 서비스: IPv6 내부 LoadBalancer 서비스는 내부 IPv6 서브넷의 BYOIPv6 주소를 사용합니다. INTERNAL_IPV6_SUBNETWORK_CREATION 모드로 구성된 공개 위임 프리픽스(PDP)의 리전 IPv6 하위 프리픽스에서 이 서브넷을 만듭니다. 자세한 내용은 IPv6 하위 프리픽스 만들기 및 사용을 참조하세요.
서비스를 구성하려면 networking.gke.io/load-balancer-subnet 주석을 사용하여 BYOIPv6 서브넷을 지정하거나 해당 서브넷을 클러스터의 기본 서브넷으로 사용합니다. 필요한 경우 networking.gke.io/load-balancer-ip-addresses 주석을 사용하여 예약된 고정 내부 BYOIPv6 주소를 지정합니다.
내부 LoadBalancer 서비스는 networking.gke.io/ip-collection-v6 주석을 지원하지 않습니다. 이 주석을 적용하면 GKE가 이를 무시하고 IPCollectionV6Error 경고 이벤트를 내보냅니다.
자세한 내용은 내부 LoadBalancer 서비스에 자체 IPv6 주소 사용(BYOIPv6)을 참조하세요.
다음 단계
- LoadBalancer 서비스 알아보기
- 내부 부하 분산기 설정 방법 알아보기
- 애플리케이션 부하 분산기용 인그레스 개요 읽어보기
- 독립형 NEG 사용 방법 알아보기
- VPC 방화벽 규칙 자세히 알아보기