如何解决GCP中的“在区域中找不到外部IP地址'IP_ADDRESS_NAME'”

时间:2019-07-01 13:27:42

标签: networking google-cloud-platform vpc

关于StackOverflow的第一个问题。随时询问是否需要更多背景信息,并在此先感谢您。

我正在设置一个具有两个要求的Google Compute Engine托管实例组:

  • 轻松的HTTPS配置。因此,将托管实例组与负载均衡器配合使用。
  • 用于第三方IP白名单的静态IP。

我知道静态IP使其无法水平扩展,但是在这种情况下并不重要。

我面临的问题是,静态IP地址无法应用于实例组,因为GCE指出在该区域中找不到该名称。协议是,静态IP地址区域为europe-west4,托管组区域为europe-west4a,因此它应该能够找到它,对吧?

所以我的问题是,为什么这不起作用?

我尝试使实例组区域基于而不是基于区域,但这会产生相同的错误。

命令行抛出错误:

# [START create_template]

  gcloud compute instance-templates create ${TEMPLATE} \
    --image-family=${IMAGE_FAMILY} \
    --image-project=${IMAGE_PROJECT} \
    --machine-type=${MACHINE_TYPE} \
    --scopes=${SCOPES} \
    --metadata-from-file startup-script=${STARTUP_SCRIPT} \
    --tags ${TAGS}\
    --metadata BUCKET=${BUCKET} \
    --address=${STATIC_IP_ADDRESS_NAME}

# [END create_template]

# Create the managed instance group.
# [START create_group]
  gcloud compute instance-groups managed create ${GROUP} \
    --base-instance-name ${GROUP} \
    --size 1 \
    --template ${TEMPLATE} \
    --zone europe-west4-a

# [END create_group]

预期输出将创建具有静态出口IP地址的计算引擎。

我遇到以下错误。

ERROR: (gcloud.compute.instance-groups.managed.create) Could not fetch resource:
 - Invalid value for field 'resource.instanceTemplate': 'https://www.googleapis.com/compute/v1/projects/companyproject-test/global/instanceTemplates/service-name-group-tmpl'. Unable to create an instance from instanceTemplate service-name-group-tmpl in zone europe-west4-a:
        Invalid value for field 'instance.networkInterfaces[0].accessConfigs[0].natIP': The specified external IP address 'STATIC_IP_ADDRESS_NAME' was not found in region 'europe-west4'

在静态外部IP地址的文档中,他们声明该区域或区域的资源可以使用静态IP地址。请参阅文档中的“ Static external IP addresses”。

此外,可以使用文档将状态添加到单个实例模板中。 Link

1 个答案:

答案 0 :(得分:1)

通过使用以下命令将静态IP地址分配给组中的单个实例来解决该问题:

# Retrieve the single instance name and save it in a variable
  instance=`gcloud compute instance-groups managed list-instances name-group --zone=europe-west4-a --format="value(instance.basename())"`

# Remove the existing external NAT of the instance
  gcloud compute instances delete-access-config $instance \
    --access-config-name "External NAT" \
    --zone=$ZONE
# Add the new external NAT that has the static address
    gcloud compute instances add-access-config $instance \
   --access-config-name "External NAT" \
    --address $IP_ADDRESS \
    --zone=$ZONE