Согласно документации IP-адреса раздел Внешние IP-адреса :
Эфемерные внешние IP-адреса доступны экземплярам ВМ и правилам пересылки. Эфемерные внешние IP-адреса остаются подключенными к экземпляру виртуальной машины только до тех пор, пока виртуальная машина не будет остановлена и перезапущена или экземпляр не будет завершен. Если экземпляр остановлен, любые эфемерные внешние IP-адреса, назначенные экземпляру, возвращаются в общий пул Compute Engine и становятся доступными для использования другими проектами. Когда остановленный экземпляр запускается снова, ему назначается новый временный внешний IP-адрес.
В качестве возможного обходного пути вы можете резервировать внешний IP-адрес каждый раз, когда вы хочу это изменить. Пожалуйста, взгляните на мои шаги ниже:
- создать экземпляр ВМ:
$ gcloud compute instances create instance-1 --zone=us-central1-a --machine-type=n1-standard-1 --image=ubuntu-1804-bionic-v20200610 --image-project=ubuntu-os-cloud
Created [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-1 us-central1-a n1-standard-1 10.128.0.5 35.239.122.55 RUNNING
резерв внешний IP-адрес:
$ gcloud compute addresses create external-ip-upd-1 --region=us-central1
Created [https://www.googleapis.com/compute/v1/projects/test-prj/regions/us-central1/addresses/external-ip-upd-1
$ gcloud compute addresses list
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
external-ip-upd-1 34.66.150.26 EXTERNAL us-central1 RESERVED
отменить назначение существующий внешний IP-адрес экземпляра ВМ:
$ gcloud compute instances describe instance-1 --zone=us-central1-a
...
networkInterfaces:
- accessConfigs:
- kind: compute#accessConfig
name: external-nat
natIP: 34.66.150.26
networkTier: PREMIUM
type: ONE_TO_ONE_NAT
fingerprint: 4vzdAl27owk=
kind: compute#networkInterface
name: nic0
network: https://www.googleapis.com/compute/v1/projects/test-prj/global/networks/default
networkIP: 10.128.0.5
subnetwork: https://www.googleapis.com/compute/v1/projects/test-prj/regions/us-central1/subnetworks/default
...
$ gcloud compute instances delete-access-config instance-1 --access-config-name "external-nat" --zone=us-central1-a
Updated [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-1 us-central1-a n1-standard-1 10.128.0.5 RUNNING
назначить новый внешний IP:
$ gcloud compute instances add-access-config instance-1 --access-config-name "external-nat-upd-1" --address 34.66.150.26 --zone=us-central1-a
Updated [https://www.googleapis.com/compute/v1/projects/test-prj/zones/us-central1-a/instances/instance-1].
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-1 us-central1-a n1-standard-1 10.128.0.5 34.66.150.26 RUNNING
повторите 2-4 для следующего изменения и
освободите неиспользуемый внешний IP:
$ gcloud compute addresses create external-ip-upd-2 --region=us-central1
$ gcloud compute addresses list
NAME ADDRESS/RANGE TYPE PURPOSE NETWORK REGION SUBNET STATUS
external-ip-upd-2 34.71.149.223 EXTERNAL us-central1 RESERVED
external-ip-upd-1 34.66.150.26 EXTERNAL us-central1 IN_USE
$ gcloud compute instances delete-access-config instance-1 --access-config-name "external-nat-upd-1" --zone=us-central1-a
$ gcloud compute instances add-access-config instance-1 --access-config-name "external-nat-upd-2" --address 34.71.149.223 --zone=us-central1-a
$ gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
instance-1 us-central1-a n1-standard-1 10.128.0.5 34.71.149.223 RUNNING
$ gcloud compute addresses delete external-ip-new --region=us-central1
Если вы заметили, что недавно зарезервированный IP-адрес использовался некоторое время, a go вы можете зарезервировать другой IP-адрес, чтобы получить еще один, а затем освободить неиспользуемые IP-адреса.
ОБНОВЛЕНИЕ Если вы считаете, что обнаружили проблему, вы можете отправить отчет по адресу Google Publi c Issue Tracker или запросите функцию , чтобы избежать перенастройки вручную.