VPC 기반 클러스터

이 페이지에서는 Google Kubernetes Engine(GKE)의 VPC 기반 클러스터에 대해 일반적인 개요를 제공합니다.

개요

GKE에서는 한 pod에서 다른 pod로 트래픽을 라우팅하는 방법에 따라 클러스터를 구분할 수 있습니다. 별칭 IP 주소 범위를 사용하는 클러스터를 VPC 기반 클러스터라고 부릅니다. VPC 네트워크의 커스텀 정적 경로를 사용하는 클러스터를 경로 기반 클러스터라고 부릅니다.

VPC 기반 클러스터의 이점

VPC 기반 클러스터에는 다음과 같은 여러 가지 이점이 있습니다.

  • pod IP 주소는 기본적으로 연결된 클러스터의 VPC 네트워크와 기타 VPC 네트워크 내에서 VPC 네트워크 피어링을 통해 라우팅됩니다.

  • pod IP 주소는 클러스터에서 pod가 생성되기 전에 VPC 네트워크에서 예약되어 있습니다. 이를 통해 VPC 네트워크의 다른 리소스와의 충돌을 방지하고 IP 주소 할당을 보다 효율적으로 계획할 수 있습니다.

  • pod IP 주소 범위는 커스텀 정적 경로에 의존하지 않으며, 시스템 생성 및 커스텀 정적 경로 할당량을 소비하지 않습니다. 대신 자동 생성된 서브넷 경로가 VPC 기반 클러스터의 라우팅을 처리합니다.

  • 클러스터 노드의 IP 주소 대신 pod IP 주소 범위에만 적용되는 방화벽 규칙을 만들 수 있습니다.

  • 일반적으로 pod IP 주소 범위와 서브넷 보조 IP 주소 범위는 Cloud Router를 사용하여 Cloud VPN 또는 Cloud Interconnect와 연결된 온프레미스 네트워크에서 액세스할 수 있습니다.

기본 클러스터 네트워크 모드

기본 클러스터 네트워크 모드는 클러스터를 만드는 방법에 따라 달라집니다.

다음 표에서는 각 클러스터 만들기 방법의 기본 클러스터 네트워크 모드를 보여줍니다.

클러스터 생성 방법 클러스터 네트워크 모드
Google Cloud Console VPC 기반
REST API 경로 기반
gcloud v256.0.0 이상 또는 v250.0.0 이하 경로 기반
gcloud v251.0.0 - 255.0.0 VPC 기반

VPC 기반 클러스터의 IP 주소 범위

VPC 기반 클러스터를 만들 때 VPC 네트워크에 서브넷을 지정합니다. 클러스터는 고유한 서브넷 IP 범위 세 개를 사용합니다.

  • 모든 노드 IP 주소에 서브넷의 기본 IP 주소 범위를 사용합니다.
  • 모든 pod IP 주소에 보조 IP 범위 한 개를 사용합니다.
  • 모든 서비스(클러스터 IP) 주소에 다른 보조 IP 주소 범위를 사용합니다.

다음 표에서는 노드, pod, 서비스의 IP 주소 범위를 요약해서 보여줍니다.

범위 설명 예시
노드

노드 IP 주소는 클러스터와 연결된 서브넷의 기본 IP 주소 범위에서 할당됩니다.

pod의 노드 IP 주소와 서브넷의 보조 IP 주소 범위 크기 모두 클러스터에서 지원할 수 있는 노드 수를 제한합니다. 자세한 내용은 노드 제한 범위를 참조하세요.

900 노드 클러스터를 만들려는 경우 클러스터 서브넷의 기본 IP 주소 범위는 최소한 /22(2(32-22) = 210 = 1,024개 주소)여야 합니다. 기본 IP 주소 범위마다 IP 주소 4개가 예약되어 있으므로 주소 1,024개 중 1,020개를 사용할 수 있습니다.

자세한 내용은 서브넷 기본 IP 주소 범위Pod의 서브넷 보조 IP 주소 범위를 참조하세요.

포드

Pod IP 주소는 Pod의 클러스터 서브넷 보조 IP 주소 범위에서 가져와 집니다. 노드당 최대 Pod 수를 다르게 설정하지 않으면 GKE는 /24 별칭 IP 범위(주소 256개)를 Pod가 실행되는 각 노드에 할당합니다. 각 노드에서는 별칭 IP 주소 256개를 사용하여 Pod를 최대 110개까지 지원합니다.

노드당 Pod를 최대 110개까지 지원하는 900 노드 클러스터의 경우 Pod에서는 IP 주소가 900 × 256 = 230,400개 필요합니다. 각 노드에는 넷마스크의 크기가 /24인 별칭 IP 범위가 할당됩니다. 이 클러스터에는 Pod의 보조 IP 범위에서 서브넷 마스크가 /14 이하인 서브넷이 필요합니다. 이 보조 IP 범위 범위는 Pod에 IP 주소를 2(32-14) = 218 = 262,144개 제공합니다.

자세한 내용은 Pod의 서브넷 보조 IP 주소 범위를 참조하세요.

서비스

서비스의 클러스터 서브넷 보조 IP 주소 범위에서 서비스(클러스터 IP) 주소를 가져옵니다. 이 범위는 클러스터에 호스팅하는 모든 Kubernetes 서비스의 주소를 제공할 만큼 충분히 커야 합니다.

서비스를 최대 3,000개까지 실행하는 클러스터의 경우 클러스터 IP 주소 3,000개가 필요합니다. 보조 범위 크기는 /20 이상이어야 합니다. /20 IP 주소 범위에는 IP 주소가 2(32-20) = 212 = 4,096개 있습니다.

자세한 내용은 서비스의 서브넷 보조 IP 주소 범위를 참조하세요.

내부 IP 주소

VPC 기반 클러스터의 서브넷에 사용하는 IP 주소는 서브넷 범위가 유효해야 합니다. 유효한 범위에는 비공개 IP 주소(RFC 1918 및 기타 주소)와 비공개로 사용되는 공개 IP 주소가 포함됩니다. 유효한 서브넷 범위에 대한 자세한 내용은 Virtual Private Cloud 문서의 유효한 범위제한된 범위를 참조하세요.

이러한 범위 사용 설정에 대한 안내는 비RFC 1918 비공개 IP 주소 범위 사용을 참조하세요.

비공개 클러스터에서 이러한 범위를 사용하는 방법에 대한 안내는 비공개로 사용되는 공개 IP 주소 범위 사용 설정을 참조하세요.

보조 범위 할당 방법

다음 두 가지 방법 중 하나를 사용하여 pod IP 범위와 서비스(ClusterIP) 주소 범위를 VPC 기반 클러스터에 할당할 수 있습니다.

GKE에서 관리(기본값)

GKE는 서브넷의 보조 범위를 만들고 관리할 수 있습니다. 클러스터를 만들 때 Pod 및 서비스 모두에 전체 CIDR 범위 또는 넷마스크 크기를 지정합니다. 예를 들어 pod에는 10.1.0.0/16을, 서비스에는 10.2.0.0/20을 지정하거나 pod에는 /16을, 서비스에는 /20을 지정할 수 있습니다.

클러스터와 서브넷을 동시에 만들 경우 pod와 서비스 IP 주소 범위는 GKE에서 관리됩니다.

사용자 관리

서브넷의 보조 IP 주소 범위를 만든 후 이 범위를 사용하는 클러스터를 만들 수 있습니다. 보조 범위를 수동으로 만들 경우에는 직접 관리해야 합니다.

만들 수 있는 최소 IP 주소 범위는 /28입니다. 하지만 하나 이상의 노드를 만들 수 있도록 충분히 큰 범위를 사용해야 합니다. 사용 가능한 최소 범위는 노드당 최대 Pod 수에 따라 다릅니다. 노드당 최대 Pod 값에 대해 최소 사용 가능한 CIDR 범위는 IP 주소 할당 최적화의 표를 참조하세요.

Pod의 IP 주소 범위를 소진한 경우 더 큰 Pod 주소 범위로 새 클러스터를 만들거나 노드 풀에 대한 --max-pods-per-node를 줄인 후 노드 풀을 다시 만들어야 합니다.

경로 기반 클러스터와의 차이점

pod와 서비스(ClusterIP) 주소의 할당 방식은 경로 기반 클러스터에서 사용되는 방식과 다릅니다. pod와 서비스에 단일 CIDR을 함께 지정하는 대신 클러스터의 서브넷에 pod와 서비스에 각각 하나씩 보조 IP 주소 범위 두 개를 선택하거나 만들어야 합니다.

공유 VPC 고려사항

공유 VPC 환경에서 VPC 기반 클러스터를 만들 때 공유 VPC 호스트 프로젝트의 네트워크 관리자 역할이 있는 프로젝트 소유자, 편집자 또는 IAM 구성원이 클러스터의 서브넷 및 보조 IP 주소 범위를 수동으로 지정해야 합니다. 클러스터를 만드는 서비스 프로젝트 관리자에게는 최소한 공유 VPC 네트워크의 호스트 프로젝트의 원하는 서브넷에 대한 서브넷 수준 권한이 있어야 합니다.

공유 VPC 환경에서 보조 IP 주소 범위는 GKE에서 관리될 수 없습니다. 클러스터를 만들기 전에 공유 VPC 호스트 프로젝트의 네트워크 관리자가 서브넷과 보조 IP 주소 범위를 만들어야 합니다. 공유 VPC 네트워크에서 VPC 기반 클러스터를 설정하는 방법의 예시는 공유 VPC로 클러스터 설정을 참조하세요.

IP 주소 범위 계획

다음 섹션의 정보를 사용하여 클러스터에서 사용하는 서브넷의 기본 IP 주소 범위와 보조 IP 주소 범위의 크기를 계산할 수 있습니다.

서브넷 기본 IP 주소 범위

모든 서브넷에는 기본 IP 주소 범위가 있어야 합니다. Google Cloud 리소스가 서브넷을 사용하는 경우에도 언제든지 기본 IP 주소 범위를 확장할 수 있습니다. 단, 서브넷을 만든 후에는 서브넷의 기본 IP 주소 체계를 줄이거나 변경할 수 없습니다. 기본 IP 주소 범위의 처음 IP 주소 두 개와 마지막 IP 주소 두 개는 Google Cloud에서 예약되어 있습니다.

다음 표에서는 서브넷의 기본 IP 주소 범위의 크기를 고려하여 서브넷을 사용하는 모든 클러스터에 만들 수 있는 최대 노드 수를 보여줍니다.

서브넷 기본 IP 범위 최대 노드 수
/29
서브넷 기본 IP 범위의 최소 크기
노드 4개
/28 노드 12개
/27 노드 28개
/26 노드 60개
/25 노드 124개
/24 노드 252개
/23 노드 508개
/22 노드 1,020개
/21 노드 2,044개
/20
자동 모드 네트워크에서 서브넷 기본 IP 범위의 기본 크기
노드 4,092개
/19 노드 8,188개
/8
서브넷 기본 IP 범위의 최대 크기
노드 16,777,212개

유용한 수식

다음 수식을 사용하여 다음을 수행할 수 있습니다.

  • 주어진 넷마스크가 지원할 수 있는 최대 노드 수 N을 계산합니다. 유효 범위가 8~29(양 끝 값 포함)인 S를 넷마스크 크기에 사용합니다.

    N = 2(32 -S) - 4

  • 노드를 최대 S개까지 지원하는 데 필요한 넷마스크 크기 N를 계산합니다.

    S = 32 - ⌈log2(N + 4)⌉

    ⌈⌉Ceiling(최소 정수) 함수로, 다음 정수로 올림 처리합니다. 넷마스크 크기 S의 유효 범위는 8~29(양 끝 값 포함)입니다.

pod의 서브넷 보조 IP 주소 범위

pod의 보조 IP 주소 범위를 신중하게 계획합니다. 서브넷의 보조 IP 주소 범위를 바꿀 수 있지만, 바꾸면 클러스터가 불안정해질 수 있으므로 지원되지 않습니다.

그러나 연속되지 않은 다중 pod CIDR을 사용하여 추가 pod IP 주소 범위를 만들 수 있습니다.

다음 표에서는 Pod에서 사용하는 서브넷의 보조 IP 주소 범위 크기를 고려하여 서브넷을 사용하는 모든 클러스터에 만들 수 있는 최대 노드 수와 최대 Pod 수를 보여줍니다. 이 표에서는 노드당 최대 Pod 수110개(기본값이자 최대한으로 가능한 Pod 밀도)로 가정합니다.

Pod의 서브넷 보조 IP 범위 최대 pod IP 주소 수 최대 노드 수 최대 Pod 수
/24
보조 범위 할당 방법을 사용자가 관리할 경우에 가능한 최소 Pod IP 범위
주소 256개 노드 1개 Pod 110개
/23
보조 범위 할당 방법을 사용자가 관리할 경우에만 가능
주소 512개 노드 2개 Pod 220개
/22
보조 범위 할당 방법을 사용자가 관리할 경우에만 가능
주소 1,024개 노드 4개 Pod 440개
/21
보조 범위 할당 방법을 GKE에서 관리할 경우에 가능한 최소 Pod IP 범위
주소 2,048개 노드 8개 Pod 880개
/20 주소 4,096개 노드 16개 Pod 1,760개
/19 주소 8,192개 노드 32개 Pod 3,520개
/18 주소 16,384개 노드 64개 Pod 7,040개
/17 주소 32,768개 노드 128개 Pod 14,080개
/16 주소 65,536개 노드 256개 Pod 28,160개
/15 주소 131,072개 노드 512개 Pod 56,320개
/14
보조 범위 할당 방법을 GKE에서 관리할 경우 Pod의 서브넷 보조 IP 범위 기본 크기
주소 262,144개 노드 1,024개 Pod 112,640개
/13 주소 524,288개 노드 2,048개 Pod 225,280개
/12 주소 1,048,576개 노드 4,096개 Pod 450,560개
/11
주소 2,097,152개 노드 8,192개 Pod 901,120개
/10
주소 4,194,304개 노드 16,384개 Pod 1,802,240개
/9
가능한 최대 Pod 주소 범위
주소 8,388,608개 노드 32,768개 Pod 3,604,480개

노드당 최대 pod 수를 변경한 경우 다음 수식을 사용하여 pod가 지원할 수 있는 서브넷의 보조 IP 주소 범위에 포함되는 최대 노드 및 pod 수를 계산할 수 있습니다.

  1. 각 노드 pod 범위의 넷마스크 크기 M을 계산합니다.
    M = 31 - ⌈log2(Q)⌉ 각 항목의 의미는 다음과 같습니다.

    • Q는 노드당 Pod 수입니다.
    • ⌈⌉는 Ceiling(최소 정수) 함수로 다음 정수로 올림 처리합니다.
  2. pod의 서브넷 보조 IP 주소 범위에서 지원할 수 있는 최대 노드 수 N을 계산합니다.
    N = 2(M - S) 각 항목의 의미는 다음과 같습니다.

    • M은 첫 번째 단계에서 계산된 pod의 각 노드 별칭 IP 주소 범위의 넷마스크 크기입니다.
    • S는 서브넷 보조 IP 주소 범위의 서브넷 마스크 크기입니다.
  3. pod의 서브넷 보조 IP 주소 범위에서 지원할 수 있는 최대 pod 수 P를 계산합니다.
    P = N × Q 각 항목의 의미는 다음과 같습니다.

    • N은 이전 단계에서 계산된 최대 노드 수입니다.
    • Q는 노드당 Pod 수입니다.

서비스의 서브넷 보조 IP 주소 범위

서비스의 보조 IP 주소 범위를 신중하게 계획합니다. 이 범위는 서브넷 보조 IP 주소 범위이므로 Google Cloud 리소스가 이 범위를 사용하지 않을 경우에만 바꿀 수 있습니다. 클러스터가 이 범위를 서비스(클러스터 IP 주소)에 사용하는 한 변경할 수 없습니다.

노드 및 pod IP 주소 범위와 달리 각 클러스터는 서비스에 대해 서브넷 보조 IP 주소 범위가 고유해야 하며, 공유 기본 또는 보조 IP 범위에서 가져올 수 없습니다.

다음 표에서는 서비스의 서브넷 보조 IP 주소 범위 크기를 고려하여 서브넷을 사용하여 단일 클러스터에서 만들 수 있는 최대 서비스 수를 보여줍니다.

서비스의 보조 IP 범위 최대 서비스 수
/27
가능한 최소 서비스 주소 범위
서비스 32개
/26 서비스 64개
/25 서비스 128개
/24 서비스 256개
/23 서비스 512개
/22 서비스 1,024개
/21 서비스 2,048개
/20
보조 범위 할당 방법을 GKE에서 관리할 경우 서비스의 서브넷 보조 IP 범위 기본 크기
서비스 4,096개
/19 서비스 8,192개
/18 서비스 16,384개
/17 서비스 32,768개
/16
가능한 최대 서비스 주소 범위
서비스 65,536개

노드 제한 범위

주어진 GKE 클러스터의 최대 Pod 수와 최대 서비스 수는 클러스터의 보조 범위 크기에 따라 제한됩니다. 클러스터의 최대 노드 수는 클러스터 서브넷의 기본 IP 주소 범위 클러스터의 Pod 주소 범위의 크기에 따라 제한됩니다.

Cloud Console에서는 다음과 같은 오류 메시지를 표시하여 서브넷의 기본 IP 주소 범위 또는 클러스터의 Pod IP 주소 범위(Pod의 서브넷 보조 IP 주소 범위)가 소진되었음을 나타냅니다.

Instance [node name] creation failed: IP space of [cluster subnet] is
exhausted

다음 단계