별칭 IP 주소를 사용하여 VPC 네이티브 클러스터 만들기

이 페이지에서는 별칭 IP 주소를 사용하여 Google Kubernetes Engine에서 VPC 네이티브 클러스터를 만드는 방법을 설명합니다. GKE 네트워킹에 대한 일반적 정보는 네트워크 개요를 참조하세요.

개요

별칭 IP 주소를 사용하면 GKE 클러스터가 Google Cloud Platform(GCP)에 알려진 CIDR 블록에서 IP 주소를 할당할 수 있습니다. 이렇게 하면 클러스터의 확장성이 커지고 클러스터와 다른 GCP 제품 및 항목의 상호 작용이 개선됩니다.

이점

별칭 IP 주소를 사용하면 몇 가지 이점이 있습니다.

  • 포드 IP 주소는 GCP 네트워크 내에서 기본적으로 라우팅 가능하며(VPC 네트워크 피어링을 통하는 방식 포함), 더 이상 경로 할당량을 소모하지 않습니다.
  • 포드 IP 주소는 네트워크 내에서 미리 예약되므로 다른 컴퓨팅 리소스와의 충돌을 방지합니다.
  • 네트워킹 레이어는 스푸핑 방지 검사를 수행하여 송신 트래픽이 임의의 소스 IP 주소로 전송되지 않도록 할 수 있습니다.
  • 별칭이 지정된 IP 주소는 Cloud Router가 BGP를 통해 통지할 수 있습니다.
  • 별칭 IP 주소를 사용하면 포드가 NAT 게이트웨이를 사용하지 않고 호스팅된 서비스에 직접 액세스할 수 있습니다.

제한사항

  • 지금은 VPC 네이티브 클러스터를 고급 경로를 사용하는 클러스터로 이전할 수 없습니다.
  • 지금은 포드 라우팅에 경로를 사용하는 기존 클러스터를 별칭 IP 주소를 사용하는 클러스터로 이전할 수 없습니다.
  • 이전 네트워크를 VPC 네이티브 클러스터에 사용할 수 없습니다.
  • 내부 서비스용 클러스터 IP 주소는 클러스터 내에서만 사용할 수 있습니다. VPC 안이지만 클러스터 밖에서(예를 들어 Compute Engine 인스턴스에서) Kubernetes 서비스에 액세스하려면 내부 부하 분산기를 사용하세요.

시작하기 전에

이 작업을 준비하려면 다음 단계를 수행하세요.

  • Google Kubernetes Engine API가 사용 설정되었는지 확인합니다.
  • Google Kubernetes Engine API 사용 설정
  • Cloud SDK가 설치되었는지 확인합니다.
  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project [PROJECT_ID]
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone [COMPUTE_ZONE]
  • 지역 클러스터를 사용하는 경우 기본 컴퓨팅 지역을 설정합니다.
    gcloud config set compute/region [COMPUTE_REGION]
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

보조 범위

별칭 IP 주소를 사용하여 생성된 클러스터는 다음 두 보조 범위를 사용하여 VPC에서 IP 주소를 할당합니다.

  • 포드 IP용 별칭 IP 주소를 할당하는 범위
  • VPC 내에서 서비스 IP 주소의 재사용을 막기 위해 ClusterIP 서비스를 위한 공간을 예약하는 범위

별칭 IP 주소의 할당 스키마는 고급 경로에 사용되는 스키마와 다릅니다. 고급 경로의 경우, 전체 클러스터에 하나의 CIDR 범위가 할당되고, 범위는 포드와 서비스(범위의 마지막 /20) 간에 나뉩니다. 별칭 IP 주소의 경우, 서비스 범위는 클러스터 범위 밖의 별개의 CIDR 범위입니다.

보조 범위 관리

보조 범위를 클러스터에 연결하는 두 가지 방법은 다음과 같습니다.

GKE가 관리

제어 영역이 보조 범위를 관리하도록 할 수 있습니다. 이것은 별칭 IP 주소를 사용하여 클러스터를 생성하는 경우와 CIDR 범위/넷마스크 플래그(--cluster-ipv4-cidr--services-ipv4-cidr)를 사용하는 경우에 사용되는 기본 모드입니다.

CIDR 범위의 이름을 명시적으로 지정하거나(예: 10.0.0.0/16) 넷마스크 크기를 정의하여(예: /16) 보조 범위의 크기와 배치를 맞춤설정할 수 있습니다. 이 방법으로 클러스터를 만들거나 삭제하면 GKE가 VPC에서 자동으로 보조 범위를 만들거나 삭제합니다.

사용자가 관리

수동으로 보조 범위를 만든 다음 이 범위를 사용하여 클러스터를 만들 수 있습니다. 수동으로 보조 범위를 만드는 경우, 직접 관리해야 합니다.

공유 VPC 네트워크에서 클러스터의 보조 범위를 수동으로 만들어야 합니다. 공유 VPC의 경우, GKE 클러스터를 만드는 사용자는 자신의 테넌트 사용자 인증 정보를 사용하여 보조 범위를 만들 수 없습니다. 호스트 프로젝트의 소유자가 보조 범위를 만들어 클러스터에 사용할 테넌트에 전달합니다.

클러스터 크기 조정 시 고려 사항

주어진 GKE 클러스터의 최대 노드 및 서비스 수는 해당 클러스터의 보조 범위 크기에 의해 결정됩니다. 클러스터를 만든 후에는 보조 범위 크기를 변경할 수 없습니다. 클러스터를 만들 때는 예상되는 클러스터 증가를 수용하기에 충분한 보조 범위를 선택해야 합니다.

다음 표에서는 고려해야 할 3가지 범위인 노드, 포드, 서비스에 대해 설명합니다.

범위 안내
노드

노드 IP는 클러스터에 연결된 하위 네트워크의 기본 범위에서 가져옵니다. 클러스터 하위 네트워크는 클러스터의 전체 노드 숫자가 들어갈 만큼 충분히 커야 합니다.

예를 들어 노드가 900개인 클러스터를 만들려는 경우, 클러스터와 함께 사용되는 서브넷의 크기는 /22 이상이어야 합니다. 서브넷 크기 /22에는 2(32-22) = 210 = 1024 - 4개의 예약된 IP 주소 = 1,020개의 IP 주소가 포함되어 클러스터에 필요한 900개 노드 IP 주소에 충분합니다.

포드

현재 각 노드는 /24(2(32-24) = 28 = 256) 블록의 포드 IP 주소를 할당합니다. 이러한 포드 IP 주소는 포드의 연결된 보조 범위에서 가져옵니다. --cluster-ipv4-cidr 또는 --cluster-secondary-range-name 플래그에 의해 결정되는 포드 범위는 적어도 (총 노드 수 x 256)개의 IP 주소가 들어갈 만큼 커야 합니다.

예를 들어 노드가 900개인 클러스터에는 900 × 256 = 230,400개의 IP 주소가 필요합니다. IP 주소는 /24 크기의 블록이어야 합니다. 이것이 노드에 할당되는 단위이기 때문입니다. 보조 범위의 크기는 /14 이상이어야 합니다. /14의 IP 주소 범위는 2(32-14) = 218 ≈ 262,000개의 IP 주소가 됩니다.

서비스

모든 클러스터는 Kubernetes 서비스 클러스터 IP의 IP 주소 범위를 예약해야 합니다. 서비스 IP 주소는 연결된 서비스의 보조 범위에서 할당됩니다. IP 주소 블록은 클러스터에서 실행될 것으로 예상되는 총 서비스 수에 충분해야 합니다. --services-ipv4-cidr 또는 --services-secondary-range-name 플래그를 사용하여 범위를 정의합니다.

예를 들어 최대 3,000개의 서비스를 실행하는 클러스터에는 클러스터 IP 주소에 사용할 3,000개의 IP 주소가 필요합니다. 크기 /20 이상의 보조 범위가 필요합니다. /20의 IP 주소 범위는 2(32-20) = 212 ≈ 4k개의 IP 주소가 됩니다.

노드 생성은 포드 주소 범위로부터 할당할 수 있는 주소로 제한됩니다. 포드 주소 범위(노드 하나를 추가로 생성할 경우 적어도 256개)에 더 이상 사용 가능한 IP 주소가 없으면 노드 생성이 실패하고 Instance [instance name] creation failed: IP space of [cluster subnet] is exhausted 오류가 표시됩니다.

사용자 관리형 보조 범위를 사용 중인 경우에는 아래 표를 참조하여 해당 클러스터 서브넷 크기의 최대 노드에 도달할 수 있는지 확인하세요.

노드의 서브넷 크기 최대 노드 필요한 최대 포드 IP 주소 권장되는 포드 주소 범위
/29 4 1,024 /21
/28 12 3,072 /20
/27 28 7,168 /19
/26 60 15,360 /18
/25 124 31,744 /17
/24 252 64,512 /16
/23 508 130,048 /15
/22 1,020 261,120 /14
/21 2,044 523,264 /13
/20 4,092 1,047,552 /12
/19 8,188 2,096,128 /11(최대 포드 주소 범위)

범위 크기 기본값 및 한도

범위 기본 크기 최소 크기 최대 크기
노드(클러스터 서브넷)

/20 = 212 = 4,096 - 4개의 예약된 IP 주소 = 4092개의 노드용 IP 주소

/29 = 23 = 8 - 4개의 예약된 IP 주소 = 4개의 노드용 IP 주소

/7 = 225 = 약 3,300만 개의 노드용 IP 주소

포드(보조 범위)

/14 = 218 = 262,114개의 IP 주소가 포드에 할당됨

/24 = 28 = 256개의 IP 주소가 포드에 할당됨


/21 = 211 = 2,048개의 IP 주소가 포드에 할당됨(GKE에서 관리되는 범위)

/11 = 221 = 약 200만 개의 IP 주소

서비스(보조 범위)

/20 = 212 = 4,096개의 IP 주소가 서비스에 할당됨

/27 = 25 = 32개의 IP 주소가 서비스에 할당됨

/16 = 216 = 65,536개의 IP 주소가 서비스에 할당됨

별칭 IP 주소로 클러스터 만들기

Google Cloud Platform Console을 사용하여 별칭 IP 주소로 VPC 네이티브 클러스터를 만들 수 있습니다.

노드에 할당할 수 있는 최대 포드 수를 구성하여 클러스터의 IP 주소 공간 사용을 최적화할 수 있습니다.

gcloud 명령줄 도구 또는 GKE API를 사용할 수도 있습니다.

gcloud

별칭 IP 주소로 클러스터를 만들려면 다음 명령어를 실행합니다. 여기서 [CLUSTER_NAME]은 선택한 클러스터 이름입니다.

gcloud container clusters create [CLUSTER_NAME] --enable-ip-alias

콘솔

별칭 IP 주소로 클러스터를 만들려면 다음 단계를 수행하세요.

  1. GCP Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다. 그런 다음 고급 옵션을 클릭합니다.

  4. VPC 네이티브 섹션에서 VPC 네이티브 사용(별칭 IP 사용)을 선택합니다.

  5. 만들기를 클릭합니다.

API

별칭 IP 주소로 클러스터를 만들려면 클러스터 리소스에서 IPAllocationPolicy 객체를 정의하세요.

{
  "name": [CLUSTER_NAME],
  "description": [DESCRIPTION],
  ...
  "ipAllocationPolicy": {
    "useIpAliases": true,
    "clusterIpv4CidrBlock"      : string,
    "servicesIpv4CidrBlock"     : string,
    "clusterSecondaryRangeName" : string,
    "servicesSecondaryRangeName": string,

  },
  ...
}

각 항목의 의미는 다음과 같습니다.

  • "useIpAliases": true는 별칭 IP 주소로 클러스터를 만듭니다.
  • "clusterIpv4CidrBlock"은 포드 CIDR 범위의 크기/위치입니다. 포드 보조 범위의 크기를 결정하며, CIDR 표기법의 IP/크기(예: 10.0.0.0/14) 또는 /크기(예: /14)일 수 있습니다. 지정된 크기의 빈 공간이 VPC의 사용 가능한 공간에서 선택됩니다. 공백으로 두면 유효 범위가 발견되고 기본 크기로 생성됩니다.
  • "servicesIpv4CidrBlock"은 서비스 CIDR 범위의 크기/위치입니다. "clusterIpv4CidrBlock" 설명을 참조하세요.
  • "clusterSecondaryRangeName"은 포드 보조 범위의 이름입니다. 보조 범위는 이미 존재해야 하고 클러스터에 연결된 하위 네트워크(예: --subnetwork 플래그로 지정된 하위 네트워크)에 속해야 합니다.
  • "serviceSecondaryRangeName"은 서비스 보조 범위의 이름입니다. 보조 범위는 이미 존재해야 하고 클러스터에 연결된 하위 네트워크(예: --subnetwork 플래그로 지정된 하위 네트워크)에 속해야 합니다.

더 많은 클러스터의 예는 예시를 참조하세요.

클러스터의 보조 범위 확인

별칭 IP 주소로 클러스터를 만든 후에 클러스터의 범위를 확인해야 합니다.

gcloud

클러스터를 확인하려면 다음 명령어를 실행합니다.

gcloud container clusters describe [CLUSTER_NAME]

명령어 출력의 ipAllocationPolicy 필드에서 다음을 찾습니다.

  • clusterIpv4Cidr은 포드의 보조 범위입니다.
  • servicesIpv4Cidr은 서비스의 보조 범위입니다.

콘솔

클러스터를 확인하려면 다음 단계를 수행합니다.

  1. GCP Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 원하는 클러스터를 선택합니다.

보조 범위는 클러스터 섹션의 세부정보 탭에 표시됩니다.

  • 컨테이너 주소 범위는 포드의 보조 범위입니다.
  • 서비스 주소 범위는 서비스의 보조 범위입니다.

예시

다음 섹션에서는 별칭 IP 주소의 사용 예시를 제공합니다.

특정 IP 주소 범위로 클러스터 만들기

gcloud

이 명령어는 지정된 포드 및 서비스 범위로 my-cluster를 만듭니다. 보조 범위는 자동으로 생성되어 기본 하위 네트워크에 연결되며, GKE가 관리합니다.

gcloud container clusters create my-cluster \
  --enable-ip-alias --cluster-ipv4-cidr=10.0.0.0/14 \
  --services-ipv4-cidr=10.4.0.0/19

콘솔

주어진 포드 및 서비스 범위로 my-cluster를 만듭니다. 보조 범위는 자동으로 생성되어 기본 하위 네트워크에 연결되며, GKE가 관리합니다.

  1. GCP Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다. 그런 다음 고급 옵션을 클릭합니다.

  4. VPC 네이티브 섹션에서 VPC 네이티브 사용(별칭 IP 사용)을 선택합니다.

  5. 포드 주소 범위 필드를 포드 범위(예: 10.0.0.0/14)로 채웁니다.

  6. 서비스 주소 범위 필드를 서비스 범위(예: 10.4.0.0/19)로 채웁니다.

다른 하위 네트워크에 특정 크기의 클러스터 만들기

이 명령어는 지정된 포드 및 서비스 범위 크기로 my-cluster를 만듭니다. CIDR 범위 위치는 VPC의 여유 공간에서 결정됩니다. 보조 범위는 하위 네트워크에 연결된 상태로 생성됩니다my-subnet. 보조 범위는 GKE에 의해 관리됩니다.

gcloud container clusters create my-cluster \
  --subnetwork my-subnet \
  --enable-ip-alias --cluster-ipv4-cidr=/16 \
  --services-ipv4-cidr=/22

기존 보조 범위로 클러스터 만들기

별칭 IP 주소의 보조 범위 만들기에 대한 자세한 내용은 별칭 IP 범위 개요를 참조하세요.

서브넷에 두 개의 보조 범위를 만들어야 합니다. 하나는 포드용 my-pods이고, 하나는 서비스용 my-services입니다.

gcloud compute networks subnets update my-subnet \
    --add-secondary-ranges my-pods=10.0.0.0/16,my-services=10.1.0.0/16 \
    --region us-central1

클러스터를 만들려면 다음 단계에 따릅니다.

gcloud

다음 명령어를 실행합니다.

gcloud container clusters create my-cluster \
--enable-ip-alias \
--cluster-secondary-range-name=my-pods \
--services-secondary-range-name=my-services

콘솔

다음 단계를 수행합니다.

  1. GCP Console에서 Google Kubernetes Engine 메뉴로 이동합니다.

    Google Kubernetes Engine 메뉴로 이동

  2. 클러스터 만들기를 클릭합니다.

  3. 원하는 대로 클러스터를 구성합니다. 그런 다음 고급 옵션을 클릭합니다.

  4. VPC 네이티브 섹션에서 VPC 네이티브 사용(별칭 IP 사용)을 선택합니다.

  5. 자동으로 보조 범위 만들기를 거짓으로 설정합니다.

  6. 클러스터에 사용할 네트워크노드 서브넷을 선택합니다.

  7. 클러스터에 사용할 포드 보조 범위서비스 보조 범위를 선택합니다.

자동으로 하위 네트워크 만들기

다음 절차는 자동 생성된 하위 네트워크로 새로운 별칭 IP 주소 클러스터를 만듭니다.

gcloud

별칭 IP 주소를 사용하는 새 클러스터를 만들려면 다음 명령어를 실행합니다.

gcloud container clusters create --enable-ip-alias --create-subnetwork name=my-cluster-subnet

이 명령어에서 새 클러스터의 IP 주소 범위와 하위 네트워크는 자동으로 구성됩니다. 하위 네트워크의 이름을 제공하거나(이 예에서는 name=my-cluster-subnet) 빈 문자열("")을 제공해 자동으로 이름이 생성되도록 할 수 있습니다.

직접 클러스터를 구성하려면 다음 명령어를 실행합니다.

gcloud container clusters create [CLUSTER_NAME] --enable-ip-alias \
--create-subnetwork="" [--cluster-ipv4-cidr [RANGE] --services-ipv4-cidr [RANGE] ]

이 명령어에서

  • [CLUSTER_NAME]은 선택한 클러스터 이름입니다.
  • --enable-ip-alias 플래그는 클러스터가 별칭 IP 주소를 사용함을 나타냅니다.
  • --create-subnetwork 플래그는 클러스터의 하위 네트워크가 자동으로 생성되도록 합니다.
  • 선택사항인 --cluster-ipv4-cidr 플래그는 클러스터 CIDR 범위의 크기와 위치를 나타냅니다. [RANGE]10.0.0.0/18과 같은 [IP address]/[SIZE] 형식이거나 IP 주소가 자동으로 할당되는 간단한 /[SIZE] 형식일 수 있습니다. 이 플래그가 없으면 기본 크기로 CIDR 범위가 자동 할당됩니다.
  • 선택사항인 --services-ipv4-cidr 플래그는 서비스 CIDR 범위의 크기와 위치를 나타냅니다. [RANGE] 사양은 --cluster-ipv4-cidr과 동일합니다. 이 범위는 --cluster-ip4-cidr과 겹칠 수 없으며 그 반대도 마찬가지입니다. 이 플래그가 없으면 기본 크기로 CIDR 범위가 자동 할당됩니다.

API

별칭 IP 주소로 클러스터를 만들려면 클러스터 리소스에서 IPAllocationPolicy 객체를 정의하세요.

{
  "name": [CLUSTER_NAME],
  "description": [DESCRIPTION],
  ...
  "ipAllocationPolicy": {
    "useIpAliases": true,
    "createSubnetwork": true,
    "subnetworkName": [SUBNET_NAME]
  },
  ...
}

"useIpAliases": true는 별칭 IP 주소로 클러스터를 만듭니다. createSubnetwork는 자동으로 클러스터의 하위 네트워크를 만들고 프로비저닝합니다. subnetworkName은 선택사항입니다. 비워 두면 하위 네트워크의 이름이 자동으로 선택됩니다.

문제해결

이 섹션에서는 별칭 IP 주소와 관련된 문제를 해결하는 방법을 안내합니다.

포드를 위한 여유 IP 주소 공간 부족

증상: * 클러스터가 장기간 프로비저닝 상태에서 멈춰 있습니다. * 클러스터 생성이 관리형 인스턴스 그룹(MIG) 오류를 반환합니다. * 기존 클러스터에 새 노드를 추가할 수 없습니다.

가능한 원인

포드 보조 범위의 할당되지 않은 공간이 클러스터에서 요청된 노드에 비해 충분히 크지 않습니다. 예를 들어 사용자가 포드에 /23 보조 범위를 지정하고 세 개 이상의 노드를 요청하는 경우, 클러스터가 프로비저닝 상태에서 멈출 수 있습니다. 적절한 IP 주소 범위 크기 조정에 대한 지침은 클러스터 크기 조정 시 고려사항을 참조하세요.

클러스터를 만드는 동안 이 문제가 발생하면 프로비저닝 상태에서 멈춘 클러스터를 삭제하고 클러스터 공간이 충분한 보조 범위로 다른 클러스터를 만듭니다.

서브넷에는 최대 5개의 보조 범위가 있을 수 있습니다. 각 VPC 네이티브 클러스터에는 포드 및 서비스에 대해 각각 하나씩 적어도 2개의 보조 범위가 필요합니다.

노드 풀 크기 조절 중에 이 문제가 발생하면 기존 노드를 제거하여 새 노드의 공간을 확보해야 합니다.

다음 단계

이 페이지가 도움이 되었나요? 평가를 부탁드립니다.

다음에 대한 의견 보내기...

Kubernetes Engine