建立及使用內部範圍

本文件說明如何建立、使用及刪除內部範圍。

內部範圍可讓您分配內部 IP 位址區塊,並指定這些區塊的使用方式,協助您管理虛擬私人雲端 (VPC) 網路中的統一 IP 位址空間。

事前準備

必要的角色

如要取得使用內部範圍所需的權限,請要求管理員為您授予專案的 Compute 網路管理員 (roles/compute.networkAdmin) IAM 角色。如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和機構的存取權」。

您或許還可透過自訂角色或其他預先定義的角色取得必要權限。

預留內部範圍

建立內部範圍時,您至少需要指定兩項內容:要分配的 IP 位址,以及要分配位址的網路。您可以使用特定 CIDR 區塊建立 IPv4 或 IPv6 內部範圍,也可以讓 Google Cloud 自動分配 IPv4 區塊。您無法使用自動分配的位址區塊建立 IPv6 內部範圍。

當您要求自動分配的 IPv4 CIDR 區塊時,您會提供前置字元長度和一或多個選用的目標 IPv4 CIDR 區塊。如果您未指定目標 CIDR 區塊, Google Cloud 會為自訂模式 VPC 網路使用 10.0.0.0/8 的預設範圍,或為自動模式 VPC 網路使用 10.128.0.0/9 的預設範圍。 Google Cloud 會考量現有 IP 位址分配,並從目標 CIDR 區塊中分配內部範圍,以便使用所選大小的免費 CIDR 區塊。您可以提供 CIDR 區塊的選用清單來排除這個分配,藉此進一步細化這項分配。Google Cloud 會將 IP 位址區塊分配給與任何排除區塊不重疊的內部範圍。建立內部範圍後,就無法更新排除區塊清單。

如要控管 Google Cloud 用來自動選取空白區塊的方法,您可以指定分配策略 (預覽)。如果您未指定分配策略, Google Cloud會隨機從目標 CIDR 區塊 (如果未指定目標 CIDR 區塊,則為預設範圍) 中分配空白 IP 位址範圍。如要選擇分配策略,請使用 Google Cloud CLI 或傳送 API 要求。

您可以使用 IPv6 內部範圍,避免自動指派 IP 位址至新的 IPv6 專屬或雙重堆疊子網路。IPv6 內部範圍必須使用用途類型 EXTERNAL_TO_VPC 和對等類型 FOR_SELF。您必須加入特定的 IPv6 CIDR 區塊,且 overlaps 欄位必須為空白或未指定。

如要防止使用者更新內部範圍的 CIDR 區塊或重疊設定,您可以建立不可變動的內部範圍。不可變動的內部範圍會防止這些屬性變更,但您仍可更新說明。建立內部範圍後,就無法變更不可變動性。

如果內部範圍或資源在同一個虛擬私有雲網路共用重疊的 IP 位址,預設無法建立這類內部範圍或資源。 Google Cloud 您可以設定 IPv4 內部範圍,允許與現有子網路、新路由和現有路由的位址範圍重疊。您無法建立 Google Cloud 使用現有內部範圍 IP 位址的資源,除非您明確將資源與內部範圍建立關聯 (針對子網路) 或設定重疊 (針對路由)。

主控台

  1. 前往 Google Cloud 控制台的「Internal ranges」頁面。

    前往「內部範圍」

  2. 按一下「保留內部範圍」

  3. 輸入名稱。

  4. 選用步驟:輸入說明。

  5. 選取 IP 版本。

    • 如果您選取「IPv4」IPv4,請執行下列操作:

      1. 指定內部範圍是否不可變動。
      2. 選取預訂方式。

        • 如果您選取「自動」,請按照下列步驟操作:

          1. 選取前置字串長度。
          2. 按一下「新增目標 IP 位址範圍」,然後輸入目標 IP 位址範圍。您可以新增多個目標範圍。
          3. 選用:按一下「新增要排除的範圍」,然後輸入要排除的 IP 位址範圍。您可以新增多個排除範圍。

            Google Cloud 會將 IP 位址區塊分配給不與任何排除範圍重疊的內部範圍。建立內部範圍後,就無法更新這份清單。

        • 如果您選取「讓我指定」,請以 CIDR 標記法輸入 IP 範圍。

      3. 請選取網路。

      4. 選取對等連線類型。

      5. 選取用途類型。

      6. 選用:在「允許重疊」部分,指定內部範圍是否可以與現有子網路重疊,或與新路由和現有路由重疊。

    • 如果選取「IPv6」IPv6,請執行下列操作:

      1. 指定內部範圍是否不可變更。
      2. 選取「讓我指定」,然後輸入 IPv6 或 IPv4 對應 IPv6 CIDR 區塊。
      3. 請選取網路。
      4. 按一下「Peering」,然後選取「For self」
      5. 按一下「用途」,然後選取「外部至 VPC」
  6. 按一下「保留」

gcloud

  • 如要為特定 IPv4 或 IPv6 CIDR 區塊保留內部範圍,請使用 gcloud network-connectivity internal-ranges create 指令

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE
    

    更改下列內容:

    • RANGE_NAME:新內部範圍的名稱
    • CIDR_RANGE:要分配給新內部範圍的 IPv4、IPv6 或 IPv4 對應 IPv6 CIDR 區塊
      • 如果您指定 IPv6 區塊,則必須執行下列操作:
        • peering 類型設為 FOR_SELF
        • usage 類型設為 EXTERNAL_TO_VPC
    • NETWORK_NAME:要建立內部範圍的網路名稱
    • DESCRIPTION:內部範圍的選用說明
    • PEERING_TYPE:內部範圍的對等互連類型

      選項包括 FOR_SELFFOR_PEERNOT_SHARED。預設為 FOR_SELF

    • USAGE_TYPE:內部範圍的用途類型

      選項包括 FOR_VPCEXTERNAL_TO_VPCFOR_MIGRATION。預設值為 FOR_VPC

  • 如要使用自動分配的 CIDR 區塊保留 IPv4 內部範圍,請使用下列指令:

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --network=NETWORK_NAME \
        --prefix-length=PREFIX_LENGTH \
        --target-cidr-range=TARGET_CIDR_RANGE \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --description="DESCRIPTION" \
        --allocation-strategy=ALLOCATION_STRATEGY
        [--first-available-ranges-lookup-size=FIRST_N_LOOKUP_SIZE]
    

    更改下列內容:

    • PREFIX_LENGTH:已分配 IP 位址的前置字串長度
    • TARGET_CIDR_RANGE:目標 CIDR 區塊,系統會從該區塊分配 IPv4 位址區塊

      您可以以半形逗號分隔的清單輸入多個 CIDR 區塊。預設值為 10.0.0.0/8 (自訂模式虛擬私有雲網路) 或 10.128.0.0/9 (自動模式虛擬私有雲網路)。

    • ALLOCATION_STRATEGY:您想為這個內部範圍的 CIDR 區塊使用的配置策略

      選項包括 RANDOMFIRST_AVAILABLERANDOM_FIRST_N_AVAILABLEFIRST_SMALLEST_FITTING。預設為 RANDOM

    • FIRST_N_LOOKUP_SIZE:針對 RANDOM_FIRST_N_AVAILABLE 分配策略,在隨機決定一個區塊之前要找到的免費 CIDR 區塊數量

      只有在您選擇 RANDOM_FIRST_N_AVAILABLE 分配策略時,才需要加入這個標記。

  • 如果您想在使用自動分配的 CIDR 區塊預留 IPv4 內部範圍時排除 IP 位址範圍,請使用下列指令:

    gcloud alpha network-connectivity internal-ranges create RANGE_NAME \
        --network=NETWORK_NAME \
        --prefix-length=PREFIX_LENGTH \
        --target-cidr-range=TARGET_CIDR_RANGE \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --description="DESCRIPTION" \
        --exclude-cidr-ranges=EXCLUDED_RANGES
    

    EXCLUDED_RANGES 替換為以半形逗號分隔的一或多個 IPv4 CIDR 區塊清單,用於排除區塊。 Google Cloud 會將 IP 位址區塊分配給不與任何排除區塊重疊的內部範圍。建立內部範圍後,就無法更新清單。

  • 如要預留重疊的 IPv4 內部範圍,請使用下列指令:

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --overlaps=OVERLAPS
    

    OVERLAPS 替換為要允許的重疊類型。選項為 OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE。您可以將這兩個值加入以半形逗號分隔的清單中。

  • 如要保留不可變動的內部範圍,請使用下列指令:

    gcloud network-connectivity internal-ranges create RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --network=NETWORK_NAME \
        --description="DESCRIPTION" \
        --peering=PEERING_TYPE \
        --usage=USAGE_TYPE \
        --immutable
    

API

  • 如要為特定 IPv4 或 IPv6 CIDR 區塊保留內部範圍,請向 projects.locations.internalRanges.create 方法提出 POST 要求。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE"
    }
    

    更改下列內容:

    • PROJECT_ID:內部範圍的父專案 ID
    • RANGE_NAME:內部範圍的名稱
    • CIDR_RANGE:要分配至內部範圍的 IPv4、IPv6 或 IPv4 對應 IPv6 CIDR 區塊
      • 如果您指定 IPv6 區塊,則必須執行下列操作:
        • peering 類型設為 FOR_SELF
        • usage 類型設為 EXTERNAL_TO_VPC
    • NETWORK_NAME:要建立內部範圍的網路名稱
    • DESCRIPTION:新內部範圍的選用說明
    • PEERING_TYPE:內部範圍的對等互連類型

      選項包括 FOR_SELFFOR_PEERNOT_SHARED。預設為 FOR_SELF

    • USAGE_TYPE:內部範圍的用途類型

      選項包括 FOR_VPCEXTERNAL_TO_VPCFOR_MIGRATION。預設值為 FOR_VPC

  • 如要保留使用自動分配 CIDR 區塊的 IPv4 內部範圍,請提出以下要求:

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "prefixLength": PREFIX_LENGTH,
      "targetCidrRange": "TARGET_CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "allocationOptions": {
        "allocationStrategy": "ALLOCATION_STRATEGY",
        ["firstAvailableRangesLookupSize": FIRST_N_LOOKUP_SIZE]
      }
    }
    

    更改下列內容:

    • PREFIX_LENGTH:範圍 IP 位址區塊的 CIDR 前置字串長度
    • TARGET_CIDR_RANGE:目標 CIDR 區塊,系統會從該區塊分配 IPv4 位址區塊

      您可以在 JSON 陣列中指定多個 CIDR 範圍。預設值為 10.0.0.0/8 (自訂模式虛擬私有雲網路) 或 10.128.0.0/9 (自動模式虛擬私有雲網路)。

    • ALLOCATION_STRATEGY:您想為這個內部範圍的 CIDR 區塊使用的配置策略

      選項包括 RANDOMFIRST_AVAILABLERANDOM_FIRST_N_AVAILABLEFIRST_SMALLEST_FITTING。預設為 RANDOM

    • FIRST_N_LOOKUP_SIZE:針對 RANDOM_FIRST_N_AVAILABLE 分配策略,在隨機決定一個區塊之前要找到的免費 CIDR 區塊數量

      只有在您選擇 RANDOM_FIRST_N_AVAILABLE 分配策略時,才需要加入這個欄位。

  • 如果您想在使用自動分配的 CIDR 區塊預留 IPv4 內部範圍時排除 IP 位址範圍,請提出以下要求:

    POST https://networkconnectivity.googleapis.com/v1alpha1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "prefixLength": PREFIX_LENGTH,
      "targetCidrRange": "TARGET_CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "excludeCidrRanges": ["EXCLUDED_RANGE_1","EXCLUDED_RANGE_2"]
    }
    

    EXCLUDED_RANGE_1EXCLUDED_RANGE_2 替換為一或多個要排除的 IPv4 CIDR 區塊。 Google Cloud 會將 IP 位址區塊分配給不會與任何排除區塊重疊的內部範圍。建立內部範圍後,就無法更新清單。

  • 如要保留有重疊的 IPv4 內部範圍,請提出以下要求:

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "overlaps": ["OVERLAPS"]
    }
    

    OVERLAPS 替換為要允許的重疊類型。選項為 OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE。您可以在 JSON 陣列中加入這兩個值。

  • 如要預留不可變動的內部範圍,請提出以下要求:

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
    {
      "ipCidrRange": "CIDR_RANGE",
      "network": "NETWORK_NAME",
      "description": "DESCRIPTION",
      "peering": "PEERING_TYPE",
      "usage": "USAGE_TYPE",
      "immutable": true
    }
    

為子網路遷移作業預留 IPv4 內部範圍

您可以使用內部範圍,將 CIDR 範圍從一個子網路遷移到另一個子網路。詳情請參閱「遷移 IPv4 子網路範圍」。

gcloud

使用 gcloud network-connectivity internal-ranges create 指令

gcloud network-connectivity internal-ranges create RANGE_NAME \
    --ip-cidr-range=CIDR_RANGE \
    --network=NETWORK_NAME \
    --peering=FOR_SELF \
    --usage=FOR_MIGRATION \
    --migration-source=SOURCE_SUBNET \
    --migration-target=TARGET_SUBNET

更改下列內容:

  • RANGE_NAME:要建立的內部範圍名稱
  • CIDR_RANGE:要遷移的子網路的 IPv4 CIDR 區塊
  • NETWORK_NAME:要建立內部範圍的網路名稱
  • SOURCE_SUBNET:來源子網路的 URI
  • TARGET_SUBNET:目標子網路的 URI

API

projects.locations.internalRanges.create 方法提出 POST 要求。

POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=RANGE_NAME
{
  "ipCidrRange": "CIDR_RANGE",
  "network": "NETWORK_NAME",
  "peering": "FOR_SELF",
  "usage": "FOR_MIGRATION",
  "migration": {
    "source": "SOURCE_SUBNET",
    "target": "TARGET_SUBNET"
  }
}

更改下列內容:

  • PROJECT_ID:內部範圍的父專案 ID
  • RANGE_NAME:新內部範圍的名稱
  • CIDR_RANGE:要遷移的子網路的 IPv4 CIDR 區塊
  • NETWORK_NAME:要建立內部範圍的網路名稱
  • SOURCE_SUBNET:來源子網路的 URI
  • TARGET_SUBNET:目標子網路的 URI

使用 IPv4 內部範圍建立子網路

您可以建立僅限 IPv4 或雙重堆疊子網路,並使用內部範圍指定子網路的主要內部 IPv4 位址範圍。子網路可與整個內部範圍,或部分範圍建立關聯。子網路的次要範圍也可以與內部範圍建立關聯。

主控台

  1. 在要建立新子網路的網路中保留 IPv4 內部範圍。將這個內部範圍的用途類型設為 For VPC,並將對等連線類型設為 For self

  2. 在 Google Cloud 控制台中,前往「VPC Networks」(虛擬私有雲網路) 頁面。

    前往「VPC networks」(虛擬私有雲網路)

  3. 按一下虛擬私有雲網路的名稱,顯示其「VPC network details」(虛擬私有雲網路詳細資料) 頁面。

  4. 按一下 [Add subnet] (新增子網路)。在隨即顯示的對話方塊中:

    1. 提供名稱。
    2. 請選取區域。
    3. 勾選「與內部範圍建立關聯」核取方塊。
    4. 在「預留的內部範圍」部分,選取所需範圍。
    5. 選用:如要將子網路與內部範圍的一部分建立關聯,請輸入 IPv4 範圍。
    6. 按一下「新增」。

gcloud

  1. 在要建立新子網路的網路中保留 IPv4 內部範圍。將這個內部範圍的用途類型設為 FOR_VPC,並將對等連線類型設為 FOR_SELF
  2. 執行下列其中一個步驟:

    • 如要建立與整個內部範圍相關聯的子網路,請使用 gcloud compute networks subnets create 指令

      gcloud compute networks subnets create SUBNET_NAME \
          --reserved-internal-range=networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME \
          --network=NETWORK_NAME \
          --region=REGION
      

      更改下列內容:

      • SUBNET_NAME:子網路名稱
      • PROJECT_ID:要建立子網路的專案 ID
      • RANGE_NAME:與子網路相關聯的內部範圍名稱
      • NETWORK_NAME:要建立子網路的網路名稱
      • REGION:要建立子網路的區域
    • 如要建立與內部範圍部分相關聯的子網路,請使用下列指令:

      gcloud compute networks subnets create SUBNET_NAME \
          --reserved-internal-range=networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME \
          --range=IP_RANGE \
          --network=NETWORK_NAME \
          --region=REGION
      

      IP_RANGE 替換為內部範圍的子集,也就是 IPv4 CIDR 範圍。

舉例來說,下列指令會建立一個子網路,該子網路只與保留 10.9.0.0/16 CIDR 區塊的內部範圍的 10.9.1.0/24 部分相關。

gcloud network-connectivity internal-ranges create reserved-range-one \
    --ip-cidr-range=10.9.0.0/16 \
    --network=vpc-one
gcloud compute networks subnets create subnet-one \
    --reserved-internal-range=networkconnectivity.googleapis.com/projects/project-one/locations/global/internalRanges/reserved-range-one \
    --range=10.9.1.0/24 \
    --network=vpc-one \
    --region=us-central1

API

  1. 在要建立新子網路的網路中保留 IPv4 內部範圍。將這個內部範圍的用途類型設為 FOR_VPC,並將對等連線類型設為 FOR_SELF
  2. 執行下列其中一個步驟:

    • 如要建立與整個內部範圍相關聯的子網路,請對 subnetworks.insert 方法提出 POST 要求。

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
      {
        "name" : "SUBNET_NAME",
        "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME",
        "network" : "NETWORK"
      }
      

      更改下列內容:

      • PROJECT_ID:新子網路的父項專案 ID
      • REGION:要建立子網路的區域
      • SUBNET_NAME:新子網路的名稱
      • PROJECT_ID:要建立子網路的專案 ID
      • RANGE_NAME:新子網路要使用的內部範圍名稱
      • NETWORK:要建立子網路的網路名稱
    • 如要建立與內部範圍部分相關聯的子網路,請提出下列要求:

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
      {
        "name" : "SUBNET_NAME",
        "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME",
        "range" : "IP_RANGE",
        "network" : "NETWORK"
      }
      

      IP_RANGE 替換為內部範圍的子集,也就是 IPv4 CIDR 範圍。

舉例來說,下列要求會建立一個子網路,該子網路只與包含 10.9.0.0/16 CIDR 區塊的內部範圍中的 10.9.1.0/24 部分相關。

POST https://networkconnectivity.googleapis.com/v1/projects/sample-project/locations/global/internalRanges?internalRangeId=reserved-for-subnet
{
  "targetCidrRange": "10.9.0.0/16",
  "network": "network-b"
}
POST https://compute.googleapis.com/compute/v1/projects/11223344/regions/us-central1/subnetworks
{
  "name" : "subnet-with-partial-range",
  "reservedInternalRange" : "networkconnectivity.googleapis.com/projects/project-one/locations/global/internalRanges/reserved-for-subnet",
  "range" : "10.9.1.0/24",
  "network" : "network-b"
}

使用 IPv4 內部範圍建立 GKE 叢集

您可以使用 IPv4 內部範圍,為 Google Kubernetes Engine (GKE) 虛擬私有雲原生叢集分配 IP 位址。

gcloud

  1. 使用 gcloud network-connectivity internal-ranges create 指令建立下列 IPv4 內部範圍。

    gcloud network-connectivity internal-ranges create gke-nodes-1 \
        --prefix-length=NODE_PREFIX_LENGTH \
        --network=NETWORK
    
    • 針對 GKE Pod
    gcloud network-connectivity internal-ranges create gke-pods-1 \
        --prefix-length=POD_PREFIX_LENGTH \
        --network=NETWORK
    
    gcloud network-connectivity internal-ranges create gke-services-1 \
        --prefix-length=SERVICE_PREFIX_LENGTH \
        --network=NETWORK
    

    更改下列內容:

    • NODE_PREFIX_LENGTH:與 GKE 節點相關聯的內部範圍前置字串長度
    • POD_PREFIX_LENGTH:與 GKE Pod 相關聯的內部範圍前置字串長度
    • SERVICE_PREFIX_LENGTH:與 GKE 服務相關聯的內部範圍前置字串長度
    • NETWORK:網路名稱
  2. 使用 gcloud compute networks subnets create 指令,建立使用先前步驟中建立的內部範圍的子網路。

    gcloud compute networks subnets create gke-subnet-1 \
        --network=NETWORK \
        --region=REGION \
        --reserved-internal-range="//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-nodes-1" \
        --secondary-range-with-reserved-internal-range="pods=//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-pods-1,services=//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-services-1"
    

    更改下列內容:

    • REGION:子網路的區域
    • PROJECT_ID:專案 ID
  3. 使用 gcloud container clusters create 指令建立 VPC 原生叢集。

    gcloud container clusters create CLUSTER_NAME \
        --network=NETWORK \
        --subnetwork=gke-subnet-1 \
        --zone=ZONE \
        --cluster-secondary-range-name=pods \
        --services-secondary-range-name=services \
        --enable-ip-alias
    

    ZONE 替換為叢集的區域。

API

  1. projects.locations.internalRanges.create 方法發出 POST 要求,建立下列內部範圍。

    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-nodes-1
    {
      "network": "NETWORK",
      "prefixLength": NODE_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    
    • 針對 GKE Pod
    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-pods-1
    {
      "network": "NETWORK",
      "prefixLength": POD_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    
    POST https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?internalRangeId=gke-services-1
    {
      "network": "NETWORK",
      "prefixLength": SERVICE_PREFIX_LENGTH,
      "peering": "FOR_SELF",
      "usage": "FOR_VPC"
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • NETWORK:網路名稱
    • NODE_PREFIX_LENGTH:與 GKE 節點相關聯的內部範圍前置字串長度
    • POD_PREFIX_LENGTH:與 GKE Pod 相關聯的內部範圍前置字串長度
    • SERVICE_PREFIX_LENGTH:與 GKE 服務相關聯的內部範圍前置字串長度
  2. subnetworks.insert 方法提出 POST 要求,使用先前步驟中建立的內部範圍建立子網路。

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/subnetworks
    {
      "name": "gke-subnet-1",
      "network": "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK",
      "privateIpGoogleAccess": false,
      "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-nodes-1",
      "secondaryIpRanges": [
        {
          "rangeName": "pods",
          "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-pods-1"
        },
        {
          "rangeName": "services",
          "reservedInternalRange": "//networkconnectivity.googleapis.com/projects/PROJECT_ID/locations/global/internalRanges/gke-services-1"
        }
      ]
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • REGION:子網路的區域
    • NETWORK:子網路的網路
  3. clusters.create 方法發出 POST 要求,建立 VPC 原生叢集。

    POST https://container.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/clusters
    {
      "cluster": {
        "ipAllocationPolicy": {
          "clusterSecondaryRangeName": "pods",
          "createSubnetwork": false,
          "servicesSecondaryRangeName": "services",
          "useIpAliases": true
        },
        "name": "CLUSTER_NAME",
        "network": "NETWORK",
        "nodePools": [
          {
            "config": {
              "oauthScopes": [
                "https://www.googleapis.com/auth/devstorage.read_only",
                "https://www.googleapis.com/auth/logging.write",
                "https://www.googleapis.com/auth/monitoring",
                "https://www.googleapis.com/auth/service.management.readonly",
                "https://www.googleapis.com/auth/servicecontrol",
                "https://www.googleapis.com/auth/trace.append"
              ]
            },
            "initialNodeCount": 3,
            "management": {
              "autoRepair": true,
              "autoUpgrade": true
            },
            "name": "default-pool",
            "upgradeSettings": {
              "maxSurge": 1
            }
          }
        ],
        "subnetwork": "gke-subnet-1"
      },
      "parent": "projects/PROJECT_ID/locations/ZONE"
    }
    

    更改下列內容:

    • PROJECT_ID:專案 ID
    • ZONE:叢集的可用區
    • CLUSTER_NAME:新叢集的名稱
    • NETWORK:叢集的網路

可列出內部範圍

您可以列出內部範圍,查看目前專案或特定虛擬私有雲網路中的所有內部範圍。如要列出 VPC 網路中的專案,請使用 Google Cloud CLI 或傳送 API 要求。

主控台

gcloud

  • 如要查看目前專案中的所有內部範圍,請使用 gcloud network-connectivity internal-ranges list 指令

    gcloud network-connectivity internal-ranges list
    
  • 如要查看 VPC 網路中的所有內部範圍,請使用 internal-ranges list 指令並加入篩選器。

    gcloud network-connectivity internal-ranges list \
        --filter=network:NETWORK_NAME \
        --project=PROJECT_ID
    

    更改下列內容:

    • NETWORK_NAME:要列出內部範圍的 VPC 網路名稱
    • PROJECT_ID:含有虛擬私有雲網路的專案 ID

API

  • 如要查看專案中的所有內部範圍,請對 projects.locations.internalRanges.list 方法提出 GET 要求。

    GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges
    

    PROJECT_ID 替換為要查看內部範圍的專案 ID。

  • 如要查看虛擬私有雲網路中的所有內部範圍,請對 projects.locations.internalRanges.list 方法發出 GET 要求,並加入篩選器。

    GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges?filter=network=\"https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME\"
    

    NETWORK_NAME 替換為要列出內部範圍的虛擬私人雲端網路名稱。

說明內部範圍

您可以說明內部範圍,查看所選範圍的詳細資料,包括與內部範圍相關聯的任何子網路。

主控台

  1. 前往 Google Cloud 控制台的「Internal ranges」頁面。

    前往「內部範圍」

  2. 按一下要說明的內部範圍的「名稱」

gcloud

使用 gcloud network-connectivity internal-ranges describe 指令

gcloud network-connectivity internal-ranges describe RANGE_NAME

RANGE_NAME 替換為要描述的內部範圍名稱。

API

projects.locations.internalRanges.get 方法提出 GET 要求。

GET https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME

更改下列內容:

  • PROJECT_ID:內部範圍的父專案 ID
  • RANGE_NAME:要說明的內部範圍名稱

更新內部範圍

如果內部範圍不可變更,您只能更新說明。如果內部範圍可變更,您可以擴大範圍的 CIDR 區塊,並更新重疊屬性和說明。

如要擴大內部範圍,您可以更新範圍的 CIDR 區塊,或減少前置字串長度,且更新的 CIDR 區塊必須包含先前的區塊。

如要縮小已分配的範圍或修改其他元素,請刪除內部範圍,然後建立新的範圍。

如要更新 IPv4 內部範圍的重疊屬性,請傳送 API 要求或使用 Google Cloud CLI。

主控台

  1. 前往 Google Cloud 控制台的「Internal ranges」頁面。

    前往「內部範圍」

  2. 按一下要更新的內部範圍名稱。

  3. 如要展開範圍的 CIDR 區塊,請按一下「Expand range」,然後執行下列任一操作:

    • 如要設定 IPv4 內部範圍,請按一下「前置碼長度」,然後執行下列操作:
      1. 在「前置長度」欄位中,選取較前置長度短的前置長度。
      2. 按一下 [展開]
    • 針對 IPv4 或 IPv6 內部範圍,請按一下「IP 範圍」,然後執行下列操作:
      1. 輸入 IPv4、IPv6 或 IPv4 對應 IPv6 CIDR 區塊。新區塊必須包含先前的區塊。
      2. 按一下 [展開]
  4. 如要更新範圍的說明,請按照下列步驟操作:

    1. 按一下「編輯說明」圖示
    2. 輸入新的說明。
    3. 按一下 [儲存]

gcloud

  • 如要更新內部範圍,請使用 gcloud network-connectivity internal-ranges update 指令。省略不想修改的屬性標記。

    gcloud network-connectivity internal-ranges update RANGE_NAME \
        --ip-cidr-range=CIDR_RANGE \
        --overlaps=OVERLAPS \
        --description=DESCRIPTION
    

    更改下列內容:

    • RANGE_NAME:內部範圍的名稱
    • CIDR_RANGE:已展開的 IPv4、IPv6、IPv4 對應 IPv6 CIDR 區塊,必須包含前一個區塊
    • OVERLAPS:允許的重疊類型 (僅限 IPv4 範圍)

      選項為 OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE。您可以將這兩個值加入以半形逗號分隔的清單中。如要停用重疊,請加入標記,但不指定值 (--overlaps=)。

    • DESCRIPTION:更新的說明

  • 如要縮短前置長度來擴大內部範圍,請使用下列指令:

    gcloud network-connectivity internal-ranges update RANGE_NAME \
        --prefix-length=PREFIX_LENGTH
    

    PREFIX_LENGTH 替換為更新後的前置字串長度,且該長度必須小於先前的前置字串長度。

API

  • 如要透過更新 CIDR 範圍來擴大內部範圍,請向 projects.locations.internalRanges.patch 方法提出 PATCH 要求。

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=ipCidrRange
    {
      "ipCidrRange": "CIDR_RANGE"
    }
    

    更改下列內容:

    • PROJECT_ID:內部範圍的父專案 ID
    • RANGE_NAME:內部範圍的名稱
    • CIDR_RANGE:展開的 IPv4、IPv6 或 IPv4 對應 IPv6 CIDR 區塊,必須包含前一個區塊
  • 如要縮短前置長度來擴大內部範圍,請提出下列要求:

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=prefixLength
    {
      "prefixLength": PREFIX_LENGTH
    }
    

    PREFIX_LENGTH 替換為更新過的前置字串長度,且該長度必須小於先前的前置字串長度。

  • 如要更新 IPv4 內部範圍的重疊屬性,請提出下列要求:

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=overlaps
    {
      "overlaps": ["OVERLAPS"]
    }
    

    OVERLAPS 替換為要允許的重疊類型。選項為 OVERLAP_EXISTING_SUBNET_RANGEOVERLAP_ROUTE_RANGE。您可以在 JSON 陣列中加入這兩個值。如要停用重疊,請加入欄位,但不要指定值 ("overlaps": [])。

  • 如要更新內部範圍的說明,請發出以下要求:

    PATCH https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME?updateMask=description
    {
      "description": "DESCRIPTION"
    }
    

    DESCRIPTION 替換為更新的說明。

刪除內部範圍

如果內部範圍未與子網路等 Google Cloud資源相關聯,您可以刪除該範圍。如要刪除與 Google Cloud 資源相關聯的內部範圍,請先刪除相關聯的資源。

主控台

  1. 前往 Google Cloud 控制台的「Internal ranges」頁面。

    前往「內部範圍」

  2. 按一下要刪除的內部範圍名稱。

  3. 點選「刪除」。

  4. 按一下「Delete」(刪除) 確認操作。

gcloud

使用 gcloud network-connectivity internal-ranges delete 指令

gcloud network-connectivity internal-ranges delete RANGE_TO_DELETE

RANGE_TO_DELETE 替換為要刪除的內部範圍名稱。

API

projects.locations.internalRanges.delete 方法提出 DELETE 要求。

DELETE https://networkconnectivity.googleapis.com/v1/projects/PROJECT_ID/locations/global/internalRanges/RANGE_NAME

更改下列內容:

  • PROJECT_ID:內部範圍的父專案 ID
  • RANGE_NAME:內部範圍的名稱