配置以非公开方式使用的公共 IP 范围

本页面介绍了如何在专用 IP 环境中使用以非公开方式使用的公共 IP 范围。 如需了解有关创建专用 IP 环境的一般信息,请参阅配置专用 IP Cloud Composer 环境

关于在 Cloud Composer 中使用以非公开方式使用的公共IP 范围

Google Kubernetes Engine 的资源需要使用大量 IP 地址:每个节点、pod 和服务都必须具有唯一的 IP 地址。这可能会导致现有的专用 IP 范围无法提供足够的 IP 地址。

Cloud Composer 环境可以使用非 RFC 1918 地址空间中的部分 IP 范围,而无需进行额外配置。

如果要使用更多 IP 地址,您的环境可以将某些公共 IP 地址范围用作 pod 和服务专用的内部子网 IP 地址范围。此类范围被称为“以非公开方式使用的公共 IP (PUPI) 范围”

除了特定受限范围,您能以非公开方式使用任何公共 IP 地址。

准备工作

  • 您只能在创建新环境时指定公共 IP 范围。现有环境的 IP 范围无法更改。

  • 您的环境必须是专用 IP 环境。

  • 您只能使用 gcloud、Terraform 和 REST API 创建具有 PUPI 范围的环境。

  • 只有 GKE pod 和服务可以使用公共 IP 范围。其他环境组件(如 Cloud SQL、Web 服务器和 GKE 控制平面)无法在专用 IP 环境中使用公共 IP 范围。

  • 创建 GKE 集群时停用默认 SNAT

创建环境时启用 PUPI 范围

gcloud

如需创建具有 PUPI 范围的环境,请在创建专用 IP 环境时使用参数 --enable-privately-used-public-ips。然后,为 pod 和服务指定公共 IP 地址范围。

GKE 管理的子网范围

如需创建由 GKE 管理的子网范围,请执行以下操作:

gcloud beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr POD_IP_RANGE \
    --services-ipv4-cidr SERVICES_IP_RANGE \

替换以下内容:

  • ENVIRONMENT_NAME 替换为环境名称。
  • LOCATION 替换为环境所在的 Compute Engine 区域。
  • POD_IP_RANGE 替换为以 CIDR 表示法指定的 IP 地址范围。此范围将作为次要 IP 地址范围添加到环境的子网中,并用作 Pod 的 IP 地址范围。
  • SERVICES_IP_RANGE 替换为以 CIDR 表示法指定的 IP 地址范围。此范围是您的环境子网中服务的次要 IP 地址范围。

例如:

gcloud beta composer environments create example-environment \
    --location us-central1 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-ipv4-cidr 7.32.0.0/16 \
    --services-ipv4-cidr 7.33.0.0/16

用户管理的子网范围

如需创建用户管理的范围,请执行以下操作:

gcloud beta composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name POD_IP_RANGE_NAME \
    --services-secondary-range-name SERVICES_IP_RANGE_NAME

替换以下内容:

  • ENVIRONMENT_NAME 替换为环境名称。
  • LOCATION 替换为环境所在的 Compute Engine 区域。
  • POD_IP_RANGE_NAME 替换为指定的子网中现有的次要 IP 地址范围的名称。 此范围供 pod 使用。
  • SERVICES_IP_RANGE_NAME 替换为指定的子网中现有的次要 IP 地址范围的名称。 此范围供服务使用。

例如:

gcloud beta composer environments create example-environment \
    --location us-central1 \
    --enable-ip-alias \
    --enable-private-environment \
    --enable-privately-used-public-ips \
    --cluster-secondary-range-name "public-1" \
    --services-secondary-range-name "public-2"

API

构建 environments.create API 请求。在环境资源中,为具有 PUPI 范围的环境指定配置参数。

GKE 管理的子网范围

如需创建由 GKE 管理的子网范围,请执行以下操作:

// POST https://composer.googleapis.com/v1beta1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterIpv4CidrBlock":"POD_IP_RANGE"
        "servicesIpv4CidrBlock":"SERVICES_IP_RANGE"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true,
    },
  }
}

替换以下内容:

  • ENVIRONMENT_NAME 替换为环境名称。
  • POD_IP_RANGE 替换为以 CIDR 表示法指定的 IP 地址范围。此范围将作为次要 IP 地址范围添加到环境的子网中,并用作 Pod 的 IP 地址范围。
  • SERVICES_IP_RANGE 替换为以 CIDR 表示法指定的 IP 地址范围。此范围是您的环境子网中服务的次要 IP 地址范围。

例如:

// POST https://composer.googleapis.com/v1beta1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterIpv4CidrBlock":"7.32.0.0/16"
        "servicesIpv4CidrBlock":"7.33.0.0/16"
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true,
    },
  }
}

用户管理的子网范围

如需创建用户管理的范围,请执行以下操作:

// POST https://composer.googleapis.com/v1beta1/{parent=projects/*/locations/*}/environments

{
  "name": "ENVIRONMENT_NAME",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterSecondaryRangeName":"POD_IP_RANGE"
        "servicesSecondaryRangeName": "SERVICES_IP_RANGE",
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true,
    },
  }
}

替换以下内容:

  • ENVIRONMENT_NAME 替换为环境名称。
  • POD_IP_RANGE_NAME 替换为指定的子网中现有的次要 IP 地址范围的名称。 此范围供 pod 使用。
  • SERVICES_IP_RANGE_NAME 替换为指定的子网中现有的次要 IP 地址范围的名称。 此范围供服务使用。

例如:

// POST https://composer.googleapis.com/v1beta1/{parent=projects/*/locations/*}/environments

{
  "name": "example-environment",
  "config": {
    "nodeConfig": {
      "ipAllocationPolicy": {
        "useIpAliases": true,
        "clusterSecondaryRangeName":"public-1"
        "servicesSecondaryRangeName": "public-2",
      }
    },
    "privateEnvironmentConfig": {
      "enablePrivateEnvironment": true,
      "enablePrivatelyUsedPublicIps": true,
    },
  }
}

后续步骤