포드의 다중 네트워크 지원 설정


이 페이지에서는 포드에 대한 다중 네트워크 지원을 사용하여 Google Kubernetes Engine(GKE) 클러스터의 노드 및 포드에 다중 인터페이스를 사용 설정하는 방법을 보여줍니다. 다중 네트워크 지원은 GKE Enterprise사용 설정된 프로젝트에만 제공됩니다.

이 기능과 관련된 일반적인 네트워킹 개념, 용어 및 개념, 포드의 다중 네트워크 지원에 대한 요구사항 및 제한사항에 대해 이미 잘 알고 있어야 합니다.

자세한 내용은 포드의 다중 네트워크 지원 정보를 참조하세요.

요구사항 및 제한사항

포드에 대한 다중 네트워크 지원에는 다음 요구사항과 제한사항이 있습니다.

요구사항

  • GKE 버전 1.28 이상
  • Google Kubernetes Engine(GKE) Enterprise 버전 사용 설정
  • 포드에 대한 다중 네트워크 지원은 Compute Engine에 대한 다중 NIC와 동일한 VM 수준 사양을 사용합니다.
  • 포드에 대한 다중 네트워크 지원에는 GKE Dataplane V2가 필요합니다.
  • 포드에 대한 다중 네트워크 지원은 버전 m101 이상을 실행하는 Container-Optimized OS 노드에만 제공됩니다.

일반 제한

  • 이중 스택 네트워킹에 사용 설정된 클러스터에서는 포드에 대한 다중 네트워크 지원이 작동하지 않습니다.
  • 다중 네트워크가 사용 설정된 클러스터에는 멀티 포드 CIDR을 사용할 수 없습니다.
  • 단일 GKE 클러스터의 포드 네트워크에는 CIDR 범위가 겹칠 수 없습니다.
  • 포드에 대한 다중 네트워크 지원을 사용 설정하면 노드 풀을 만든 후 노드 네트워크 인터페이스 또는 포드 네트워크를 추가하거나 삭제할 수 없습니다. 이러한 설정을 변경하려면 노드 풀을 다시 만들어야 합니다.
  • 기본적으로 포드 내부의 포드 네트워크 추가 인터페이스에서는 인터넷 액세스를 사용할 수 없습니다. 그러나 Cloud NAT를 사용하여 수동으로 사용 설정할 수 있습니다.
  • API를 통해 다중 인터페이스가 있는 포드 내의 기본 게이트웨이를 변경할 수 없습니다. 기본 게이트웨이는 기본 포드 네트워크에 연결되어 있어야 합니다.
  • 추가 포드 네트워크 또는 인터페이스를 만들더라도 기본 포드 네트워크가 항상 포드에 포함되어야 합니다.
  • 관리형 Hubble이 구성된 경우 다중 네트워크 기능을 구성할 수 없습니다.

기기 및 데이터 영역 개발 키트(DPDK) 제한사항

  • Device 유형의 NIC로 포드에 전달된 VM NIC는 동일한 노드의 다른 포드에서 사용할 수 없습니다.
  • DPDK 모드를 사용하는 포드는 VFIO 기기에 액세스하기 위해 권한 모드에서 실행되어야 합니다.
  • DPDK 모드에서 기기는 노드 리소스로 취급되며 포드의 첫 번째 컨테이너 (비초기화)에만 연결됩니다. 동일한 포드의 컨테이너 간에 여러 DPDK 기기를 분할하려면 이러한 컨테이너를 별도의 포드에서 실행해야 합니다.

확장 제한

GKE는 클러스터를 확장할 수 있는 유연한 네트워크 아키텍처를 제공합니다. 클러스터에 노드 네트워크 및 포드 네트워크를 추가할 수 있습니다. 다음과 같이 클러스터를 확장할 수 있습니다.

  • 각 GKE 노드 풀에 최대 7개의 노드 네트워크를 추가할 수 있습니다. 이는 Compute Engine VM에 대한 확장 한도와 동일합니다.
  • 각 포드에 연결된 네트워크가 7개 미만이어야 합니다.
  • 단일 노드 풀 내의 8개의 노드 네트워크에서 포드 네트워크를 최대 35개까지 구성할 수 있습니다. 다음과 같은 여러 조합으로 세분화할 수 있습니다.
    • 각각 5개의 포드 네트워크가 있는 노드 네트워크 7개
    • 각각 7개의 포드 네트워크가 있는 노드 네트워크 5개
    • 30개의 포드 네트워크가 있는 1개의 노드 네트워크. 서브넷당 보조 범위 한도는 30입니다.
  • 클러스터당 최대 50개의 포드 네트워크를 구성할 수 있습니다.
  • 노드당 최대 32개의 다중 네트워크 포드를 구성할 수 있습니다.
  • 인터페이스가 여러 개 있는 노드는 최대 3,000개까지 가능합니다.
  • 모든 포드에서 최대 100,000개의 추가 인터페이스를 사용할 수 있습니다.
  • Device 유형 네트워크로 최대 1,000개의 노드를 구성할 수 있습니다.
  • 노드당 최대 4개의 Device 유형 네트워크를 구성할 수 있습니다.

가격 책정

포드에 대한 다중 네트워크 및 고성능 지원을 포함한 Network Function Optimizer(NFO) 기능은 GKE Enterprise가 사용 설정된 프로젝트에 있는 클러스터에서만 지원됩니다. Google Kubernetes Engine(GKE) Enterprise 버전을 사용 설정하는 데 적용되는 요금을 알아보려면 GKE Enterprise 가격 책정을 참조하세요.

다중 네트워크 포드 배포

다중 네트워크 포드를 배포하려면 다음을 수행합니다.

  1. 추가 VPC, 서브넷(노드 네트워크), 보조 범위(포드 네트워크)를 준비합니다.
  2. Google Cloud CLI 명령어를 사용하여 다중 네트워크가 사용 설정된 GKE 클러스터 만들기
  3. Google Cloud CLI 명령어를 사용하여 추가 노드 네트워크 및 포드 네트워크에 연결된 새 GKE 노드 풀을 만듭니다.
  4. 포드 네트워크를 만들고 Kubernetes API를 사용하여 다중 네트워크 객체에서 올바른 VPC, 서브넷, 보조 범위를 참조합니다.
  5. 워크로드 구성에서 Kubernetes API를 사용하여 준비된 네트워크 Kubernetes 객체를 참조합니다.

시작하기 전에

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

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

추가 VPC 준비

Google Cloud는 GKE 클러스터의 초기 생성 시 사용되는 GKE 노드 풀과 연결된 클러스터를 만드는 동안 기본 포드 네트워크를 만듭니다. 기본 포드 네트워크는 모든 클러스터 노드 및 포드에서 사용할 수 있습니다. 노드 풀 내에서 다중 네트워크 기능을 사용하려면 Layer 3Device 유형 네트워크를 지원하는 기존 또는 새로운 VPC를 준비해야 합니다.

추가 VPC를 준비하려면 다음 요구사항을 고려하세요.

  • Layer 3Netdevice 유형 네트워크:

    • Layer 3 유형 네트워크를 사용하는 경우 보조 범위를 만듭니다.
    • 보조 범위의 CIDR 크기가 노드 풀의 노드 수와 원하는 노드당 포드 수를 충족할 만큼 큰지 확인합니다.
    • 기본 포드 네트워크와 마찬가지로 다른 포드 네트워크에서 IP 주소 오버프로비저닝을 사용합니다. 보조 IP 주소 범위는 노드당 포드 수보다 노드당 IP 주소 수가 2배 많아야 합니다.
  • Device 유형 네트워크 요구사항: VPC에 일반 서브넷을 만듭니다. 보조 서브넷은 필요하지 않습니다.

노드 풀에서 다중 네트워크 기능을 사용 설정하려면 추가 연결을 설정할 VPC를 준비해야 합니다. 기존 VPC를 사용하거나 노드 풀에 대해 새 VPC를 만들 수 있습니다.

Layer 3 유형 기기를 지원하는 VPC 네트워크 만들기

Layer 3 유형 기기를 지원하는 VPC 네트워크를 만들려면 다음을 수행합니다.

  • 보조 범위의 CIDR 크기가 노드 풀의 노드 수와 원하는 노드당 포드 수를 충족할 만큼 큰지 확인합니다.
  • 기본 포드 네트워크와 마찬가지로 다른 포드 네트워크에서 IP 주소 오버프로비저닝을 사용합니다. 보조 IP 주소 범위는 노드당 포드 수보다 노드당 IP 주소 수가 2배 많아야 합니다.

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --project=PROJECT_ID \
    --range=SUBNET_RANGE \
    --network=NETWORK_NAME \
    --region=REGION \
    --secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>

다음을 바꿉니다.

  • SUBNET_NAME: 서브넷의 이름입니다.
  • PROJECT_ID: 서브넷이 생성된 VPC 네트워크가 포함된 프로젝트의 ID입니다.
  • SUBNET_RANGE: CIDR 표기법으로 표시된 새 서브넷의 기본 IPv4 주소 범위입니다.
  • NETWORK_NAME: 새 서브넷이 포함된 VPC 네트워크의 이름입니다.
  • REGION: 새 서브넷이 생성되는 Google Cloud 리전입니다.
  • SECONDARY_RANGE_NAME: 보조 범위의 이름입니다.
  • SECONDARY_IP_RANGE: CIDR 표기법으로 표시된 보조 IPv4 주소 범위입니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름 필드에 네트워크 이름을 입력합니다. 예를 들면 l3-vpc입니다.

  4. 최대 전송 단위(MTU) 드롭다운에서 적절한 MTU 값을 선택합니다.

  5. 서브넷 생성 모드 섹션에서 커스텀을 선택합니다.

  6. 서브넷 추가를 클릭합니다.

  7. 새 서브넷 섹션에서 서브넷에 다음 구성 매개변수를 지정합니다.

    1. 이름을 입력합니다. 예를 들면 l3-subnet입니다.

    2. 리전을 선택합니다.

    3. IP 주소 범위를 입력합니다. 이 범위는 서브넷의 기본 IPv4 범위입니다.

      RFC 1918 주소가 아닌 범위를 선택하는 경우 범위가 기존 구성과 충돌하지 않는지 확인합니다. 자세한 내용은 IPv4 서브넷 범위를 참조하세요.

    4. 서브넷의 보조 범위를 정의하려면 보조 IP 범위 만들기를 클릭합니다.

      RFC 1918 주소가 아닌 범위를 선택하는 경우 범위가 기존 구성과 충돌하지 않는지 확인합니다. 자세한 내용은 IPv4 서브넷 범위를 참조하세요.

    5. 비공개 Google 액세스: 서브넷을 만들 때 또는 나중에 서브넷을 수정하여 서브넷에 비공개 Google 액세스를 사용 설정할 수 있습니다.

    6. 흐름 로그: 서브넷을 만들 때 또는 나중에 서브넷을 수정하여 서브넷에 VPC 흐름 로그를 사용 설정할 수 있습니다.

    7. 완료를 클릭합니다.

  8. 방화벽 규칙 섹션의 IPv4 방화벽 규칙에서 사전 정의된 방화벽 규칙을 0개 이상 선택합니다.

    이 규칙은 인스턴스에 연결하는 일반적인 사용 사례를 다룹니다. 네트워크를 만든 후 자체 방화벽 규칙을 만들 수 있습니다. 사전 정의된 각 규칙 이름은 만들려는 VPC 네트워크의 이름으로 시작합니다.

  9. IPv4 방화벽 규칙에서 allow-custom이라는 사전 정의된 인그레스 방화벽 규칙을 수정하려면 수정을 클릭합니다.

    서브넷을 수정하고 IPv4 범위를 추가하며 프로토콜 및 포트를 지정할 수 있습니다.

    나중에 서브넷을 추가할 경우 allow-custom 방화벽 규칙은 자동으로 업데이트되지 않습니다. 새 서브넷에 대한 방화벽 규칙이 필요한 경우 규칙을 추가하려면 방화벽 구성을 업데이트해야 합니다.

  10. 동적 라우팅 모드 섹션의 VPC 네트워크의 경우. 자세한 내용은 동적 라우팅 모드를 참조하세요. 나중에 동적 라우팅 모드를 변경할 수 있습니다.

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

Netdevice 또는 DPDK 유형 기기를 지원하는 VPC 네트워크 만들기

gcloud

gcloud compute networks subnets create SUBNET_NAME \
    --project=PROJECT_ID \
    --range=SUBNET_RANGE \
    --network=NETWORK_NAME \
    --region=REGION \
    --secondary-range=SECONDARY_RANGE_NAME=<SECONDARY_RANGE_RANGE>

다음을 바꿉니다.

  • SUBNET_NAME: 서브넷의 이름입니다.
  • PROJECT_ID: 서브넷이 생성된 VPC 네트워크가 포함된 프로젝트의 ID입니다.
  • SUBNET_RANGE: CIDR 표기법으로 표시된 새 서브넷의 기본 IPv4 주소 범위입니다.
  • NETWORK_NAME: 새 서브넷이 포함된 VPC 네트워크의 이름입니다.
  • REGION: 새 서브넷이 생성되는 Google Cloud 리전입니다.
  • SECONDARY_RANGE_NAME: 보조 범위의 이름입니다.
  • SECONDARY_IP_RANGE: CIDR 표기법으로 표시된 보조 IPv4 주소 범위입니다.

콘솔

  1. Google Cloud 콘솔에서 VPC 네트워크 페이지로 이동합니다.

  2. VPC 네트워크 만들기를 클릭합니다.

  3. 이름 필드에 네트워크 이름을 입력합니다. 예를 들면 netdevice-vpc 또는 dpdk-vpc입니다.

  4. 최대 전송 단위(MTU) 드롭다운에서 적절한 MTU 값을 선택합니다.

  5. 서브넷 생성 모드 섹션에서 커스텀을 선택합니다.

  6. 새 서브넷 섹션에서 서브넷에 다음 구성 매개변수를 지정합니다.

    1. 이름을 입력합니다. 예를 들면 netdevice-subnet 또는 dpdk-vpc입니다.

    2. 리전을 선택합니다.

    3. IP 주소 범위를 입력합니다. 이 범위는 서브넷의 기본 IPv4 범위입니다.

      RFC 1918 주소가 아닌 범위를 선택하는 경우 범위가 기존 구성과 충돌하지 않는지 확인합니다. 자세한 내용은 IPv4 서브넷 범위를 참조하세요.

    4. 비공개 Google 액세스: 서브넷을 만들 때 또는 나중에 서브넷을 수정하여 서브넷에 비공개 Google 액세스를 사용할지 여부를 선택합니다.

    5. 흐름 로그: 서브넷을 만들 때 또는 나중에 서브넷을 수정하여 서브넷에 VPC 흐름 로그를 사용 설정할 수 있습니다.

    6. 완료를 클릭합니다.

  7. 방화벽 규칙 섹션의 IPv4 방화벽 규칙에서 사전 정의된 방화벽 규칙을 0개 이상 선택합니다.

    이 규칙은 인스턴스에 연결하는 일반적인 사용 사례를 다룹니다. 네트워크를 만든 후 자체 방화벽 규칙을 만들 수 있습니다. 사전 정의된 각 규칙 이름은 만들려는 VPC 네트워크의 이름으로 시작합니다.

  8. IPv4 방화벽 규칙에서 allow-custom이라는 사전 정의된 인그레스 방화벽 규칙을 수정하려면 수정을 클릭합니다.

    서브넷을 수정하고 IPv4 범위를 추가하며 프로토콜 및 포트를 지정할 수 있습니다.

    나중에 서브넷을 추가할 경우 allow-custom 방화벽 규칙은 자동으로 업데이트되지 않습니다. 새 서브넷에 대한 방화벽 규칙이 필요한 경우 규칙을 추가하려면 방화벽 구성을 업데이트해야 합니다.

  9. 동적 라우팅 모드 섹션의 VPC 네트워크의 경우. 자세한 내용은 동적 라우팅 모드를 참조하세요. 나중에 동적 라우팅 모드를 변경할 수 있습니다.

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

다중 네트워크 기능이 있는 GKE 클러스터 만들기

gcloud

다중 네트워크 기능이 있는 GKE 클러스터를 만들려면 다음 안내를 따르세요.

gcloud container clusters create CLUSTER_NAME \
    --cluster-version=CLUSTER_VERSION \
    --enable-dataplane-v2 \
    --enable-ip-alias \
    --enable-multi-networking

다음을 바꿉니다.

  • CLUSTER_NAME: 클러스터의 이름
  • CLUSTER_VERSION: 클러스터의 버전

이 명령어에는 다음 플래그가 포함됩니다.

  • --enable-multi-networking: 이 클러스터의 API 서버에서 다중 네트워킹 커스텀 리소스 정의(CRD)를 사용 설정하며 다중 네트워크 객체의 조정 및 수명 주기 관리를 포함하는 네트워크 컨트롤러 관리자를 배포합니다.
  • --enable-dataplane-v2: GKE Dataplane V2를 사용 설정합니다. 이 플래그는 다중 네트워크를 사용 설정하는 데 필요합니다.

Console

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

    Google Kubernetes Engine으로 이동

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

  3. 표준 클러스터를 구성합니다. 자세한 내용은 영역 클러스터 만들기 또는 리전 클러스터 만들기를 참조하세요. 클러스터를 만드는 동안 적절한 네트워크 및 노드 서브넷을 선택합니다.

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

  5. Dataplane V2 사용 설정 체크박스를 선택합니다.

  6. 다중 네트워크 사용 설정을 선택합니다.

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

클러스터에 다중 네트워킹을 사용 설정하면 해당 클러스터의 API 서버에 필요한 CustomResourceDefinition(CRD)이 추가됩니다. 또한 다중 네트워크 객체를 조정하고 관리하는 네트워크 컨트롤러 관리자를 배포합니다. 클러스터 구성을 만든 후에는 수정할 수 없습니다.

추가 VPC에 연결된 GKE 노드 풀 만들기

포드 네트워크 만들기에서 만든 노드 네트워크(VPC 및 서브넷) 및 포드 네트워크(보조 범위)에 연결된 노드가 포함된 노드 풀을 만듭니다.

새 노드 풀을 만들고 GKE 클러스터의 추가 네트워크에 연결하려면 다음 안내를 따르세요.

gcloud

gcloud container node-pools create POOL_NAME \
  --cluster=CLUSTER_NAME \
  --additional-node-network network=NETWORK_NAME,subnetwork=SUBNET_NAME \
  --additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=POD_IP_RANGE,max-pods-per-node=NUMBER_OF_PODS \
  --additional-node-network network=highperformance,subnetwork=subnet-highperf

다음을 바꿉니다.

  • POOL_NAME을 새 노드 풀 이름으로 바꿉니다.
  • CLUSTER_NAME을 노드 풀을 추가할 기존 클러스터의 이름으로 바꿉니다.
  • NETWORK_NAME을 노드 풀의 노드를 연결할 네트워크의 이름으로 바꿉니다.
  • SUBNET_NAME을 노드에 사용할 네트워크 내의 서브넷 이름으로 바꿉니다.
  • POD_IP_RANGE: 서브넷 내의 포드 IP 주소 범위입니다.
  • NUMBER_OF_PODS의 노드당 최대 포드 수입니다.

이 명령어에는 다음 플래그가 포함됩니다.

  • --additional-node-network: 추가 네트워크 인터페이스, 네트워크, 서브네트워크의 세부정보를 정의합니다. 이는 노드 풀 노드에 연결할 수 있도록 노드 네트워크를 지정하는 데 사용됩니다. 다른 VPC에 연결하려면 이 매개변수를 지정합니다. 이 매개변수를 지정하지 않으면 클러스터와 연결된 기본 VPC가 사용됩니다. Layer 3 유형 네트워크의 경우 GKE 클러스터 내에 Network 객체로 노출되는 포드 네트워크를 정의하는 additional-pod-network 플래그를 지정합니다. --additional-node-network 플래그를 사용할 때는 네트워크와 서브네트워크를 필수 매개변수로 제공해야 합니다. 네트워크 값과 서브네트워크 값을 쉼표로 구분하고 공백을 사용하지 마세요.
  • --additional-pod-network: 포드 네트워크에 사용할 보조 범위의 세부정보를 지정합니다. Device 유형 네트워크를 사용하는 경우에는 이 매개변수가 필요하지 않습니다. 이 인수는 subnetwork, pod-ipv4-range, max-pods-per-node 키 값을 지정합니다. --additional-pod-network를 사용하는 경우 pod-ipv4-rangemax-pods-per-node 값을 공백 없이 쉼표로 구분하여 제공해야 합니다.
    • subnetwork: 노드 네트워크를 포드 네트워크와 연결합니다. 서브네트워크는 선택사항입니다. 지정하지 않으면 추가 포드 네트워크가 클러스터 생성 중에 제공되는 기본 서브네트워크와 연결됩니다.
    • --max-pods-per-node: max-pods-per-node를 지정해야 하고 2의 거듭제곱이어야 합니다. 최솟값은 4입니다. max-pods-per-node는 노드 풀의 max-pods-per-node 값보다 크지 않아야 합니다.

Console

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

    Google Kubernetes Engine으로 이동

  2. 탐색창에서 클러스터를 클릭합니다.

  3. Kubernetes 클러스터 섹션에서 자신이 만든 클러스터를 클릭합니다.

  4. 페이지 상단에서 노드 풀을 만들려면 노드 풀 추가를 클릭합니다.

  5. 노드 풀 세부정보 섹션에서 다음을 완료합니다.

    1. 노드 풀이름을 입력합니다.
    2. 노드 풀에서 만들 노드 수를 입력합니다.
  6. 탐색창의 노드 풀에서 노드를 클릭합니다.

    1. 이미지 유형 드롭다운 목록에서 containerd를 포함한 Container-Optimized OS(cos_containerd)를 선택합니다.

  7. VM을 만들 때는 해당 VM에 사용할 수 있는 리소스를 결정하는 머신 제품군에서 머신 유형을 선택합니다. 예를 들어 e2-standard-4와 같은 머신 유형에는 4개의 vCPU가 포함되어 있으므로 총 4개의 VPC를 지원할 수 있습니다. 여러 머신 제품군에서 선택할 수 있으며 각 머신 제품군은 머신 시리즈와 각 시리즈 내의 사전 정의된 또는 커스텀 머신 유형으로 구성됩니다. 각 머신 유형은 서로 다르게 청구됩니다. 자세한 내용은 머신 유형 가격표를 참조하세요.

  8. 탐색 창에서 네트워킹을 선택합니다.

  9. 노드 네트워킹 섹션에서 노드당 최대 포드 수를 지정합니다. 노드 네트워크 섹션에는 클러스터를 만드는 데 사용되는 VPC 네트워크가 표시됩니다. 이전에 설정된 VPC 네트워크 및 기기 유형과 상관 관계가 있는 추가 노드 네트워크를 지정해야 합니다.

  10. 노드 풀 연결 만들기:

    1. Layer 3 유형 기기의 경우:
      1. 노드 네트워크 섹션에서 노드 네트워크 추가를 클릭합니다.
      2. 네트워크 드롭다운 목록에서 레이어 3 유형 기기를 지원하는 VPC를 선택합니다.
      3. Layer 3 VPC용으로 만든 서브넷을 선택합니다.
      4. 별칭 포드 IP 주소 범위 섹션에서 포드 IP 주소 범위 추가를 클릭합니다.
      5. 보조 서브넷을 선택하고 노드당 최대 포드 수를 표시합니다.
      6. 완료를 선택합니다.
    2. NetdeviceDPDK 유형 기기의 경우:
      1. 노드 네트워크 섹션에서 노드 네트워크 추가를 클릭합니다.
      2. 네트워크 드롭다운 목록에서 Netdevice 또는 DPDK 유형의 기기를 지원하는 VPC를 선택합니다.
      3. Netdevice 또는 DPDK VPC에 대해 생성된 서브넷을 선택합니다.
      4. 완료를 선택합니다.
  11. 만들기를 클릭합니다.

참고:

  • 여러 추가 포드 네트워크가 동일한 노드 네트워크 내에 지정된 경우 동일한 서브넷에 있어야 합니다.
  • 서브넷의 동일한 보조 범위를 여러 번 참조할 수 없습니다.

예시 다음 예시에서는 두 개의 추가 네트워크인 datapalane(Layer 3 유형 네트워크)과 highperformance(netdevice 유형 네트워크)을 노드에 연결하는 pool-multi-net이라는 노드 풀을 만듭니다. 이 예시에서는 cluster-1이라는 GKE 클러스터를 이미 만들었다고 가정합니다.

gcloud container node-pools create pool-multi-net \
  --project my-project \
  --cluster cluster-1 \
  --zone us-central1-c \
  --additional-node-network network=dataplane,subnetwork=subnet-dp \
  --additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
  --additional-node-network network=highperformance,subnetwork=subnet-highperf

노드 네트워크 및 포드 네트워크 인터페이스를 추가로 지정하려면 다음 예시와 같이 --additional-node-network--additional-pod-network 매개변수를 여러 번 정의합니다.

--additional-node-network network=dataplane,subnetwork=subnet-dp \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-blue,max-pods-per-node=8 \
--additional-pod-network subnetwork=subnet-dp,pod-ipv4-range=sec-range-green,max-pods-per-node=8 \
--additional-node-network network=managementdataplane,subnetwork=subnet-mp \
--additional-pod-network subnetwork=subnet-mp,pod-ipv4-range=sec-range-red,max-pods-per-node=4

다음 예시와 같이 노드 풀의 기본 VPC 인터페이스에서 추가 포드 네트워크를 직접 지정하려면 다음 명령어를 실행합니다.

--additional-pod-network subnetwork=subnet-def,pod-ipv4-range=sec-range-multinet,max-pods-per-node=8

포드 네트워크 만들기

Kubernetes 객체를 정의하고 VPC, 서브넷, 보조 범위와 같은 해당 Compute Engine 리소스에 연결하여 포드가 액세스할 포드 네트워크를 정의합니다.

포드 네트워크를 만들려면 클러스터에 네트워크 CRD 객체를 정의해야 합니다.

Layer 3 VPC 네트워크 구성

YAML

Layer 3 VPC의 경우 NetworkGKENetworkParamSet 객체를 만듭니다.

  1. 다음 샘플 매니페스트를 blue-network.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: blue-network
    spec:
      type: "L3"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "l3-vpc"
    

    매니페스트는 Layer 3 유형의 blue-network라는 Network 리소스를 정의합니다. Network 객체는 네트워크와 Compute Engine 리소스를 연결하는 l3-vpc이라는 GKENetworkParamSet 객체를 참조합니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f blue-network.yaml
    
  3. 다음 매니페스트를 dataplane.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: "l3-vpc"
    spec:
      vpc: "l3-vpc"
      vpcSubnet: "subnet-dp"
      podIPv4Ranges:
        rangeNames:
        - "sec-range-blue"
    

    이 매니페스트는 dataplane이라는 GKENetworkParamSet 객체를 지정하고 VPC 이름을 dataplane으로, 서브넷 이름을 subnet-dp로 설정하고 sec-range-blue라는 포드의 보조 IPv4 주소 범위를 설정합니다.

  4. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f dataplane.yaml
    

Console

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

    Google Kubernetes Engine으로 이동

  2. 탐색창에서 네트워크 기능 옵티마이저를 클릭합니다.

  3. GKE Enterprise 사용 설정을 클릭합니다.

  4. 페이지 상단에서 만들기를 클릭하여 포드 네트워크를 만듭니다.

  5. 시작하기 전에 섹션에서 세부정보를 확인합니다.

  6. 다음: 포드 네트워크 위치를 클릭합니다.

  7. 포드 네트워크 위치 섹션의 클러스터 드롭다운에서 다중 네트워킹 및 GKE Dataplane V2가 사용 설정된 GKE 클러스터를 선택합니다.

  8. 다음: VPC 네트워크 참조를 클릭합니다.

  9. VPC 네트워크 참조 섹션의 VPC 네트워크 참조 드롭다운에서 Layer 3 다중 NIC 포드에 사용되는 VPC 네트워크를 선택합니다.

  10. 다음: 포드 네트워크 유형을 클릭합니다.

  11. 포드 네트워크 유형 섹션에서 L3을 선택하고 포드 네트워크 이름을 입력합니다.

  12. 다음: 포드 네트워크 보조 범위를 클릭합니다.

  13. 포드 네트워크 보조 범위 섹션에 보조 범위를 입력합니다.

  14. 다음: 포드 네트워크 경로를 클릭합니다.

  15. 포드 네트워크 경로 섹션에서 커스텀 경로를 정의하려면 경로 추가를 선택합니다.

  16. 포드 네트워크 만들기를 클릭합니다.

DPDK 네트워크 구성

YAML

DPDK VPC의 경우 NetworkGKENetworkParamSet 객체를 만듭니다.

  1. 다음 샘플 매니페스트를 dpdk-network.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: dpdk-network
    spec:
      type: "Device"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "dpdk"
    

    이 매니페스트는 Device 유형의 dpdk-network라는 Network 리소스를 정의합니다. Network 리소스는 구성에 대해 dpdk라는 GKENetworkParamSet 객체를 참조합니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f dpdk-network.yaml
    
  3. GKENetworkParamSet 객체의 경우 다음 매니페스트를 dpdk.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: "dpdk"
    spec:
      vpc: "dpdk"
      vpcSubnet: "subnet-dpdk"
      deviceMode: "DPDK-VFIO"
    

    이 매니페스트는 dpdk라는 GKENetworkParamSet 객체를 정의하고 VPC 이름을 dpdk로, 서브넷 이름을 subnet-dpdk로, deviceMode 이름을 DPDK-VFIO로 설정합니다.

  4. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f dpdk-network.yaml
    

Console

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

    Google Kubernetes Engine으로 이동

  2. 탐색창에서 네트워크 기능 옵티마이저를 클릭합니다.

  3. 페이지 상단에서 만들기를 클릭하여 포드 네트워크를 만듭니다.

  4. 시작하기 전에 섹션에서 세부정보를 확인합니다.

  5. 다음: 포드 네트워크 위치를 클릭합니다.

  6. 포드 네트워크 위치 섹션의 클러스터 드롭다운에서 다중 네트워킹 및 GKE Dataplane V2가 사용 설정된 GKE 클러스터를 선택합니다.

  7. 다음: VPC 네트워크 참조를 클릭합니다.

  8. VPC 네트워크 참조 섹션의 VPC 네트워크 참조 드롭다운에서 dpdk 다중 NIC에 사용되는 VPC 네트워크를 선택합니다.

  9. 다음: 포드 네트워크 유형을 클릭합니다.

  10. 포드 네트워크 유형 섹션에서 DPDK-VFIO(기기)를 선택하고 포드 네트워크 이름을 입력합니다.

  11. 다음: 포드 네트워크 보조 범위를 클릭합니다. 포드 네트워크 보조 범위 섹션을 사용할 수 없음

  12. 다음: 포드 네트워크 경로를 클릭합니다. 포드 네트워크 경로 섹션에서 경로 추가를 선택하여 커스텀 경로를 정의합니다.

  13. 포드 네트워크 만들기를 클릭합니다.

netdevice 네트워크 구성

netdevice VPC의 경우 NetworkGKENetworkParamSet 객체를 만듭니다.

YAML

  1. 다음 샘플 매니페스트를 netdevice-network.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
        name: netdevice-network
    spec:
        type: "Device"
        parametersRef:
          group: networking.gke.io
          kind: GKENetworkParamSet
          name: "netdevice"
    

    이 매니페스트는 Device 유형의 netdevice-network라는 Network 리소스를 정의합니다. netdevice라는 GKENetworkParamSet 객체를 참조합니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f netdevice-network.yaml
    
  3. 다음 매니페스트를 netdevice.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: GKENetworkParamSet
    metadata:
      name: netdevice
    spec:
      vpc: netdevice
      vpcSubnet: subnet-netdevice
      deviceMode: NetDevice
    

    이 매니페스트는 netdevice라는 GKENetworkParamSet 리소스를 정의하고 VPC 이름을 netdevice으로, 서브넷 이름을 subnet-netdevice로 설정하고, 기기 모드를 NetDevice로 지정합니다.

  4. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f netdevice.yaml
    

Console

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

    Google Kubernetes Engine으로 이동

  2. 탐색창에서 네트워크 기능 옵티마이저를 클릭합니다.

  3. 페이지 상단에서 만들기를 클릭하여 포드 네트워크를 만듭니다.

  4. 시작하기 전에 섹션에서 세부정보를 확인합니다.

  5. 다음: 포드 네트워크 위치를 클릭합니다.

  6. 포드 네트워크 위치 섹션의 클러스터 드롭다운에서 다중 네트워킹 및 GKE Dataplane V2가 사용 설정된 GKE 클러스터를 선택합니다.

  7. 다음: VPC 네트워크 참조를 클릭합니다.

  8. VPC 네트워크 참조 섹션의 VPC 네트워크 참조 드롭다운에서 netdevice 다중 NIC에 사용되는 VPC 네트워크를 선택합니다.

  9. 다음: 포드 네트워크 유형을 클릭합니다.

  10. 포드 네트워크 유형 섹션에서 NetDevice(기기)를 선택하고 포드 네트워크 이름을 입력합니다.

  11. 다음: 포드 네트워크 보조 범위를 클릭합니다. 포드 네트워크 보조 범위 섹션을 사용할 수 없음

  12. 다음: 포드 네트워크 경로를 클릭합니다. 포드 네트워크 경로 섹션에서 커스텀 경로를 정의하려면 경로 추가를 선택합니다.

  13. 포드 네트워크 만들기를 클릭합니다.

네트워크 경로 구성

네트워크 경로를 구성하면 특정 네트워크에 대한 커스텀 경로를 정의할 수 있으며, 이 경로는 포드에 설정되어 트래픽을 포드 내의 해당 인터페이스로 전달합니다.

YAML

  1. 다음 매니페스트를 red-network.yaml로 저장합니다.

    apiVersion: networking.gke.io/v1
    kind: Network
    metadata:
      name: red-network
    spec:
      type: "L3"
      parametersRef:
        group: networking.gke.io
        kind: GKENetworkParamSet
        name: "management"
      routes:
      -   to: "10.0.2.0/28"
    

    이 매니페스트는 Layer 3 유형 및 해당 네트워크 인터페이스를 통한 커스텀 경로 '10.0.2.0/28'의 red-network 네트워크 리소스를 정의합니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f red-network.yaml
    

Console

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

    Google Kubernetes Engine으로 이동

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

  3. 탐색창에서 네트워크 기능 옵티마이저를 클릭합니다.

  4. Kubernetes 클러스터 섹션에서 자신이 만든 클러스터를 클릭합니다.

  5. 페이지 상단에서 만들기를 클릭하여 포드 네트워크를 만듭니다.

  6. 포드 네트워크 경로 섹션에서 커스텀 경로를 정의합니다.

  7. 포드 네트워크 만들기를 클릭합니다.

준비된 Network 참조

워크로드 구성에서 Kubernetes API를 사용하여 준비된 Network Kubernetes 객체를 참조합니다.

특정 네트워크에 포드 연결

포드를 지정된 네트워크에 연결하려면 포드 구성 내부에 Network 객체의 이름을 주석으로 포함해야 합니다. 연결을 설정하려면 default Network 및 선택한 추가 네트워크를 주석에 모두 포함해야 합니다.

  1. 다음 샘플 매니페스트를 sample-l3-pod.yaml로 저장합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: sample-l3-pod
      annotations:
        networking.gke.io/default-interface: 'eth0'
        networking.gke.io/interfaces: |
          [
            {"interfaceName":"eth0","network":"default"},
            {"interfaceName":"eth1","network":"l3-network"}
          ]
    spec:
      containers:
      - name: sample-l3-pod
        image: busybox
        command: ["sleep", "10m"]
        ports:
        - containerPort: 80
      restartPolicy: Always
    

    이 매니페스트는 각각 defaultblue-network 네트워크에 연결된 2개의 네트워크 인터페이스 eth0eth1sample-l3-pod라는 포드를 만듭니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f sample-l3-pod.yaml
    

여러 네트워크와 포드 연결

  1. 다음 샘플 매니페스트를 sample-l3-netdevice-pod.yaml로 저장합니다.

    apiVersion: v1
    kind: Pod
    metadata:
      name: sample-l3-netdevice-pod
      annotations:
        networking.gke.io/default-interface: 'eth0'
        networking.gke.io/interfaces: |
          [
            {"interfaceName":"eth0","network":"default"},
            {"interfaceName":"eth1","network":"l3-network"},
            {"interfaceName":"eth2","network":"netdevice-network"}
          ]
    spec:
      containers:
      - name: sample-l3-netdevice-pod
        image: busybox
        command: ["sleep", "10m"]
        ports:
        - containerPort: 80
      restartPolicy: Always
    

    이 매니페스트는 각각 default, l3-networknetdevice 네트워크와 연결된 eth0, eth1eth2의 세 네트워크 인터페이스를 포함하는 sample-l3-netdevice-pod라는 포드를 생성합니다.

  2. 클러스터에 매니페스트를 적용합니다.

    kubectl apply -f sample-l3-netdevice-pod.yaml
    

템플릿의 주석 섹션에 있는 모든 ReplicaSet(배포 또는 DaemonSet)에서 동일한 주석을 사용할 수 있습니다.

다중 네트워크 사양으로 포드를 만들면 데이터 영역 구성요소는 포드의 인터페이스 구성을 자동으로 생성하고 NetworkInterface CR에 저장합니다. 포드 사양에 지정된 기본이 아닌 각 Network에 대해 NetworkInterface CR을 하나씩 만듭니다.

예를 들어 다음 매니페스트는 NetworkInterface 매니페스트의 세부정보를 보여줍니다.

apiVersion: v1
items:
-   apiVersion: networking.gke.io/v1
  kind: NetworkInterface
  metadata:
    labels:
      podName: samplepod
    name: "samplepod-c0b60cbe"
    namespace: default
  spec:
    networkName: "blue-network"
  status:
    gateway4: 172.16.1.1
    ipAddresses:
    -   172.16.1.2/32
    macAddress: 82:89:96:0b:92:54
    podName: samplepod

이 매니페스트에는 네트워크 이름, 게이트웨이 주소, 할당된 IP 주소, MAC 주소, 포드 이름이 포함됩니다.

다중 인터페이스가 있는 포드의 샘플 구성

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
      valid_lft forever preferred_lft forever
2: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default
    link/ether 2a:92:4a:e5:da:35 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.60.45.4/24 brd 10.60.45.255 scope global eth0
      valid_lft forever preferred_lft forever
10: eth1@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1460 qdisc noqueue state UP group default qlen 1000
    link/ether ba:f0:4d:eb:e8:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 172.16.1.2/32 scope global eth1
      valid_lft forever preferred_lft forever

확인

  • --enable-dataplane-v2가 사용 설정된 경우에만 --enable-multi-networking을 사용하여 클러스터를 만들어야 합니다.
  • 클러스터 및 노드 풀 생성 시 클러스터의 모든 노드 풀이 Container-Optimized OS 이미지를 실행 중인지 확인하세요.
  • 클러스터에 다중 네트워킹이 사용 설정된 경우에만 --additional-node-network 또는 --additional-pod-network로 노드 풀이 생성되었는지 확인합니다.
  • 동일한 서브넷이 노드 풀에 --additional-node-network 인수로 두 번 지정되지 않도록 합니다.
  • 동일한 보조 범위가 노드 풀에 --additional-pod-network 인수로 지정되지 않았는지 확인합니다.
  • 허용되는 최대 노드 수, 포드 수, IP 주소 수를 고려하여 네트워크 객체에 지정된 확장 한도를 따르세요.
  • 특정 서브넷 및 보조 범위를 참조하는 GKENetworkParamSet 객체가 하나만 있는지 확인합니다.
  • 각 네트워크 객체가 서로 다른 GKENetworkParamSet 객체를 참조하는지 확인합니다.
  • Device 네트워크를 사용하는 특정 서브넷으로 생성된 네트워크 객체가 보조 범위가 있는 다른 네트워크와 동일한 노드에서 사용되지 않는지 확인합니다. 런타임에서만 이를 확인할 수 있습니다.
  • 노드 풀에 할당된 다양한 보조 범위에 겹치는 IP 주소가 없는지 확인합니다.

GKE에서 멀티 네트워킹 매개변수 문제 해결

클러스터 및 노드 풀을 만들 때 Google Cloud는 유효한 다중 네트워킹 매개변수만 허용되는지 확인하기 위해 특정 검사를 구현합니다. 이렇게 하면 네트워크가 클러스터에 올바르게 설정됩니다.

다중 네트워크 워크로드를 만들지 못한 경우 포드 상태와 이벤트를 확인하여 자세한 정보를 확인할 수 있습니다.

kubectl describe pods samplepod

출력은 다음과 비슷합니다.

Name:         samplepod
Namespace:    default
Status:       Running
IP:           192.168.6.130
IPs:
  IP:  192.168.6.130
...
Events:
  Type     Reason                  Age   From               Message
  ----     ------                  ----  ----               -------
  Normal   Scheduled               26m   default-scheduler  Successfully assigned default/samplepod to node-n1-04
  Warning  FailedCreatePodSandBox  26m   kubelet            Failed to create pod sandbox: rpc error: code = Unknown desc = failed to setup network for sandbox "e16c58a443ab70d671159509e36894b57493300ea21b6c24c14bdc412b0fdbe6": Unable to create endpoint: [PUT /endpoint/{id}][400] putEndpointIdInvalid  failed getting interface and network CR for pod "default/samplepod": failed creating interface CR default/samplepod-c0b60cbe: admission webhook "vnetworkinterface.networking.gke.io" denied the request: NetworkInterface.networking.gke.io "samplepod-c0b60cbe" is invalid: Spec.NetworkName: Internal error: failed to get the referenced network "sample-network": Network.networking.gke.io "sample-network" not found
...

포드 생성 실패의 일반적인 이유는 다음과 같습니다.

  • 다중 네트워킹 리소스 요구사항이 충족되지 않아 포드를 예약할 수 없습니다.
  • 지정된 네트워크를 식별할 수 없습니다.
  • 포드에 대한 네트워크 인터페이스 객체를 구성하고 만들 수 없습니다.

Google Cloud가 API 서버에 NetworkInterface 객체를 만들었는지 검사하려면 다음 명령어를 실행합니다.

kubectl get networkinterfaces.networking.gke.io -l podName=samplepod

Kubernetes 네트워크 생성 문제 해결

네트워크를 성공적으로 만들면 구성된 네트워크에 액세스해야 하는 노드에 네트워크 상태 주석이 추가됩니다.

주석을 관찰하려면 다음 명령어를 실행합니다.

kubectl describe node NODE_NAME

NODE_NAME을 허브 이름으로 바꿉니다.

출력은 다음과 비슷합니다.

networking.gke.io/network-status: [{"name":"default"},{"name":"dp-network"}]

출력에 노드에서 사용할 수 있는 각 네트워크가 나열됩니다. 노드에 예상 네트워크 상태가 표시되지 않으면 다음을 수행합니다.

노드가 네트워크에 액세스할 수 있는지 확인

네트워크가 네트워크 상태 주석에 표시되지 않는 경우:

  1. 노드가 다중 네트워킹에 대해 구성된 풀의 일부인지 확인합니다.
  2. 노드 인터페이스에 구성 중인 네트워크에 대한 인터페이스가 있는지 확인합니다.
  3. 노드의 네트워크 상태가 누락되고 네트워크 인터페이스가 하나만 있는 경우에도 다중 네트워킹이 사용 설정된 노드 풀을 만들어야 합니다.
  4. 구성 중인 네트워크의 인터페이스가 노드에 포함되어 있지만 네트워크 상태 주석에 표시되지 않으면 NetworkGKENetworkParamSet(GNP) 리소스를 확인합니다.

NetworkGKENetworkParamSet 리소스 확인

NetworkGKENetworkParamSet(GNP) 리소스 상태에는 구성 오류를 보고하는 조건 필드가 포함됩니다. 유효한 다른 리소스에 의존하지 않으므로 먼저 GNP를 확인하는 것이 좋습니다.

조건 필드를 검사하려면 다음 명령어를 실행합니다.

kubectl get gkenetworkparamsets GNP_NAME -o yaml

GNP_NAMEGKENetworkParamSet 리소스 이름으로 바꿉니다.

Ready 조건이 true인 경우 구성이 유효하고 출력이 다음과 유사합니다.

apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
  podIPv4Ranges:
    rangeNames:
    -   sec-range-blue
  vpc: dataplane
  vpcSubnet: subnet-dp
status:
  conditions:
  -   lastTransitionTime: "2023-06-26T17:38:04Z"
    message: ""
    reason: GNPReady
    status: "True"
    type: Ready
  networkName: dp-network
  podCIDRs:
    cidrBlocks:
    -   172.16.1.0/24

Ready 조건이 false이면 출력에 이유가 표시되고 다음과 비슷합니다.

apiVersion: networking.gke.io/v1
kind: GKENetworkParamSet
...
spec:
  podIPv4Ranges:
    rangeNames:
    -   sec-range-blue
  vpc: dataplane
  vpcSubnet: subnet-nonexist
status:
  conditions:
  -   lastTransitionTime: "2023-06-26T17:37:57Z"
    message: 'subnet: subnet-nonexist not found in VPC: dataplane'
    reason: SubnetNotFound
    status: "False"
    type: Ready
  networkName: ""

유사한 메시지가 표시되면 GNP가 올바르게 구성되었는지 확인합니다. 이미 구성되어 있다면 Google Cloud 네트워크 구성이 올바른지 확인합니다. Google Cloud 네트워크 구성을 업데이트한 후 GNP 리소스를 다시 만들어 재동기화를 수동으로 트리거해야 할 수 있습니다. 이는 Google Cloud API의 무한 폴링을 방지하기 위한 것입니다.

GNP가 준비되면 Network 리소스를 확인합니다.

kubectl get networks NETWORK_NAME -o yaml

NETWORK_NAMENetwork 리소스 이름으로 바꿉니다.

유효한 구성의 출력은 다음과 비슷합니다.

apiVersion: networking.gke.io/v1
kind: Network
...
spec:
  parametersRef:
    group: networking.gke.io
    kind: GKENetworkParamSet
    name: dp-gnp
  type: L3
status:
  conditions:
  -   lastTransitionTime: "2023-06-07T19:31:42Z"
    message: ""
    reason: GNPParamsReady
    status: "True"
    type: ParamsReady
  -   lastTransitionTime: "2023-06-07T19:31:51Z"
    message: ""
    reason: NetworkReady
    status: "True"
    type: Ready
  • reason: NetworkReady는 네트워크 리소스가 올바르게 구성되었음을 나타냅니다. reason: NetworkReady는 네트워크 리소스가 특정 노드에서 사용 가능하거나 사용 중이라는 의미는 아닙니다.
  • 구성 오류 또는 오류가 있는 경우 조건의 reason 필드에서 문제의 정확한 원인을 지정합니다. 이 경우 적절하게 구성을 조정합니다.
  • GKE는 parametersRef 필드가 클러스터에 있는 GKENetworkParamSet 리소스로 설정된 경우 ParamsReady 필드를 채웁니다. GKENetworkParamSet 유형 parametersRef를 지정했지만 조건이 표시되지 않으면 이름, 종류, 그룹이 클러스터 내에 있는 GNP 리소스와 일치하는지 확인합니다.

다음 단계