경로 기반 클러스터 만들기


이 페이지에서는 Google Kubernetes Engine(GKE)에서 경로 기반 클러스터를 만드는 방법을 보여줍니다.

개요

GKE에서는 한 포드에서 다른 포드로 트래픽을 라우팅하는 방법에 따라 클러스터를 구분할 수 있습니다. Google Cloud Routes를 사용하는 클러스터를 경로 기반 클러스터라고 합니다. 별칭 IP를 사용하는 클러스터를 VPC 기반 클러스터라고 합니다.

VPC-기반은 권장되는 유형이며 GKE 버전 1.21.0-gke.1500 이상에서 새 클러스터의 기본값입니다. 경로 기반 클러스터를 만들려면 VPC 기반 옵션을 명시적으로 해제해야 합니다.

시작하기 전에

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

  • Google Kubernetes Engine API를 사용 설정합니다.
  • Google Kubernetes Engine API 사용 설정
  • 이 태스크에 Google Cloud CLI를 사용하려면 gcloud CLI를 설치한 후 초기화합니다. 이전에 gcloud CLI를 설치한 경우 gcloud components update를 실행하여 최신 버전을 가져옵니다.

경로 기반 클러스터 만들기

gcloud CLI 또는 Google Cloud 콘솔을 사용하여 경로 기반 클러스터를 만들 수 있습니다.

gcloud

경로 기반 클러스터를 만들려면 클러스터 생성 명령어에 --no-enable-ip-alias 플래그를 포함합니다.

gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias

CLUSTER_NAME을 클러스터에 지정할 이름으로 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

  3. 클러스터의 이름을 입력합니다.

  4. 탐색창의 클러스터에서 네트워킹을 클릭합니다.

  5. 고급 네트워킹 옵션에서 VPC 기반 트래픽 라우팅 사용 설정(별칭 IP 사용) 체크박스를 선택 취소합니다.

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

경로 기반 클러스터 만들기 및 제어 영역 IP 범위 선택

기본적으로 Private Service Connect를 사용하는 클러스터는 기본 서브넷 범위를 사용하여 제어 영역 엔드포인트에 할당된 내부 IP 주소를 프로비저닝합니다. 클러스터 생성 시간 중에만 다른 서브넷 범위를 선택하여 이 기본 설정을 재정의할 수 있습니다. 다음 섹션에서는 Private Service Connect로 클러스터를 만들고 서브넷 범위를 재정의하는 방법을 보여줍니다.

gcloud

Private Service Connect로 클러스터를 만듭니다.

gcloud container clusters create CLUSTER_NAME --no-enable-ip-alias \
    --private-endpoint-subnetwork=SUBNET_NAME \
    --region=COMPUTE_REGION

다음을 바꿉니다.

  • CLUSTER_NAME: GKE 클러스터의 이름입니다.
  • SUBNET_NAME: 기존 서브넷의 이름입니다.
  • COMPUTE_REGION: 클러스터의 컴퓨팅 리전입니다. 영역 클러스터를 만들려면 이 플래그를 --zone=COMPUTE_ZONE으로 바꿉니다. 여기서 COMPUTE_ZONE컴퓨팅 영역입니다.

콘솔

선행 조건

새 클러스터의 제어 영역에 서브넷을 할당하려면 먼저 서브넷을 추가해야 합니다.

클러스터 만들기 및 제어 영역 IP 범위 할당

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

  3. 클러스터의 이름을 입력합니다.

  4. 탐색창의 클러스터에서 네트워킹을 클릭합니다.

  5. IPv4 네트워크 액세스 섹션에서 다음을 수행합니다.

    1. GKE 클러스터를 공개로 만들려면 공개 클러스터 라디오 버튼을 선택합니다.
    2. GKE 클러스터를 비공개로 만들려면 비공개 클러스터 라디오 버튼을 선택합니다.

    두 경우 모두 클러스터 구성을 수정할 때 나중에 클러스터 격리 모드를 변경할 수 있습니다.

  6. 고급 네트워킹 옵션 섹션에서 제어 영역의 기본 비공개 엔드포인트 서브넷 재정의 체크박스를 선택합니다.

  7. 비공개 엔드포인트 서브넷 목록에서 사용자가 만든 서브넷을 선택합니다.

  8. VPC 기반 트래픽 라우팅 사용 설정(별칭 IP 사용) 체크박스를 선택 해제합니다.

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

클러스터의 경로 사용 확인

gcloud

클러스터 노드를 나열합니다.

kubectl get nodes

출력에 노드 이름이 표시됩니다.

NAME                                 STATUS   ...     AGE    VERSION
gke-xxx-default-pool-83e239a7-kcg8   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-qm6b   Ready    ...     42m    v1.9.7-gke.6
gke-xxx-default-pool-83e239a7-wnrq   Ready    ...     42m    1.9.7-gke.6

경로를 나열합니다.

gcloud compute routes list

출력의 NEXT_HOP 열에서 클러스터 노드 중 하나의 이름을 찾습니다.

NAME                 NETWORK        DEST_RANGE         NEXT_HOP
...
[ROUTE_NAME]         default        10.24.0.0/24       [YOUR_NODE_NAME]
...

출력을 보면, 특정 포드 주소 범위로 지정된 모든 패킷에 대해 경로가 다음 홉을 제공합니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

  2. 클러스터 목록에서 검사하려는 클러스터 이름을 클릭합니다.

  3. 클러스터 세부정보 페이지에서 노드 탭을 클릭합니다.

  4. 노드 섹션에서 노드 이름을 기록합니다.

  5. Google Cloud 콘솔의 경로 페이지로 이동합니다.

    경로로 이동

  6. 경로 목록의 다음 홉 열에서 클러스터 노드 중 하나의 이름을 찾습니다. 해당 행에서 경로 이름을 클릭합니다.

  7. 경로 세부정보 페이지의 다음 홉 섹션을 확인하여 경로에서 특정 포드 주소 범위로 지정된 모든 패킷에 다음 홉을 제공하는지 확인합니다.

노드당 포드

경로 기반 클러스터에서 각 노드에는 /24 범위의 포드 IP 주소가 할당됩니다. /24 범위의 경우 주소가 256개 있지만 노드당 최대 포드 수는 110입니다. 사용 가능한 IP 주소 수가 사용 가능한 포드 수의 약 두 배이므로, Kubernetes는 노드에서 포드가 추가 및 삭제될 때 IP 주소 재사용을 줄일 수 있습니다.

포드 주소 범위

경로 기반 클러스터에는 포드 및 서비스에 사용되는 IP 주소 범위가 포함됩니다. 범위가 포드 및 서비스 모두에 사용되더라도, 포드 주소 범위라고 부릅니다. 포드 주소 범위에서 마지막 /20은 서비스에 사용됩니다. /20 범위에는 212=4,096개의 주소가 포함됩니다. 따라서 4,096개의 주소가 서비스에 사용되고 범위의 나머지는 포드에 사용됩니다.

명령어 결과에서 pod 주소 범위는 clusterIpv4Cidr이라고 하고, 서비스에 사용되는 주소 범위는 servicesIpv4Cidr이라고 합니다. 예를 들어 gcloud container clusters describe의 출력에는 다음과 유사한 출력이 포함됩니다.

clusterIpv4Cidr: 10.96.0.0/16
...
servicesIpv4Cidr: 10.96.240.0/20

포드 주소 범위는 RFC 1918 블록 10.0.0.0/8, 172.16.0.0/12 또는 192.168.0.0/16에 속할 수 있습니다.

CIDR 범위를 지정하여 포드 주소 범위를 맞춤설정할 수 있습니다. 예를 들어 범위를 10.96.0.0/16으로 지정할 수 있습니다.

gcloud

gcloud container clusters create CLUSTER_NAME \
    --no-enable-ip-alias \
    --cluster-ipv4-cidr 10.96.0.0/16

CLUSTER_NAME을 클러스터에 지정할 이름으로 바꿉니다.

콘솔

  1. Google Cloud 콘솔에서 Google Kubernetes Engine 페이지로 이동합니다.

    Google Kubernetes Engine으로 이동

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

  3. 클러스터의 이름을 입력합니다.

  4. 탐색창의 클러스터에서 네트워킹을 클릭합니다.

  5. 고급 네트워킹 옵션에서 VPC 기반 트래픽 라우팅 사용 설정(별칭 IP 사용) 체크박스를 선택 취소합니다.

  6. 포드 주소 범위 필드에 10.96.0.0/16을 입력합니다.

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

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

특정 GKE 클러스터의 최대 노드, pod 및 서비스 수는 클러스터 서브넷 크기 및 pod 주소 범위 크기에 따라 결정됩니다. 클러스터를 만든 후에는 포드 주소 범위 크기를 변경할 수 없습니다. 클러스터를 만들 때는 클러스터의 예상 증가량을 수용하기에 충분히 큰 포드 주소 범위를 선택합니다.

다음 표에서는 노드가 900개인 클러스터에 충분한 주소 범위를 선택하는 방법을 보여줍니다.

범위 안내
노드

노드 IP 주소는 클러스터 서브넷의 기본 범위에서 가져옵니다. 클러스터 서브넷은 클러스터에 있는 총 노드 수를 수용할 만큼 충분히 커야 합니다.

예를 들어 900 노드 클러스터를 만들려는 경우, 클러스터 서브넷 크기는 최소한 /22 이상이어야 합니다. /22 범위에는 210=1,024개의 주소가 포함됩니다. 사용할 수 없는 IP 주소 4개를 빼면 1,020개가 남게 되고, 이는 900개의 노드에 충분한 개수입니다.

포드 주소 범위

각 노드에는 /24 범위의 포드 IP 주소가 포함됩니다. /24 범위에는 28=256개의 주소가 포함됩니다. 포드 주소 범위의 4,096개 주소가 서비스에 사용된 것을 기억하세요. 포드 주소 범위의 남은 부분은 포드에 사용되며, 노드 수에 256을 곱한 주소 수를 수용하기에 충분히 커야 합니다.

900 노드 클러스터를 만든다고 가정해보세요. 그러면 포드에 대해 900x256=230,400개 주소가 필요합니다. 이제 포드 주소 범위가 /14라고 가정해보세요. /14 범위에는 218=262,144개의 주소가 포함됩니다. 서비스에 사용되는 4,096개 주소를 빼면, 900 노드에 충분한 숫자인 258,048개가 남습니다.

범위 크기 기본값 및 한도

다음 표에서는 클러스터 서브넷 및 pod 주소 범위의 최소 크기, 최대 크기, 기본 크기를 보여줍니다.

범위 기본 크기 최소 크기 최대 크기
노드

/20, 212=4,096개 주소 포함. 4개의 예약된 주소를 제외하면 노드에 4,092개 주소를 사용할 수 있습니다.

/29, 23=8개 주소 포함. 4개의 예약된 주소를 제외하면 노드에 4개 주소를 사용할 수 있습니다.

/7, 225개 주소 포함. 노드에 약 3,300만 개의 주소를 사용할 수 있습니다.

포드 주소 범위

/14, 218=262,144개 주소 포함.

/19, 213=8,192개 주소 포함.

/9, 223=8,388,608개 주소 포함.

제한사항

  • VPC 기반 클러스터를 경로 기반 클러스터로 이전할 수 없습니다.
  • 경로 기반 클러스터를 VPC 기반 클러스터로 마이그레이션할 수 없습니다.
  • 경로 기반 클러스터는 비공개 IP 주소로 RFC 1918 범위의 주소만 사용할 수 있습니다. VPC 기반 클러스터에는 더 넓은 범위의 주소를 사용할 수 있습니다.
  • 경로 기반 클러스터는 이중 스택 네트워킹을 지원하지 않습니다.

다음 단계