Как поменять внешний эфемерный ip - PullRequest
3 голосов
/ 19 июня 2020

У меня есть экземпляр ВМ в Google Cloud с внешним эфемерным IP. Предполагается, что IP-адрес изменится, когда экземпляр будет остановлен и запущен, но это не так. Как я могу вручную изменить эфемерный IP?

1 Ответ

1 голос
/ 19 июня 2020

Согласно документации IP-адреса раздел Внешние IP-адреса :

Эфемерные внешние IP-адреса доступны экземплярам ВМ и правилам пересылки. Эфемерные внешние IP-адреса остаются подключенными к экземпляру виртуальной машины только до тех пор, пока виртуальная машина не будет остановлена ​​и перезапущена или экземпляр не будет завершен. Если экземпляр остановлен, любые эфемерные внешние IP-адреса, назначенные экземпляру, возвращаются в общий пул Compute Engine и становятся доступными для использования другими проектами. Когда остановленный экземпляр запускается снова, ему назначается новый временный внешний IP-адрес.

В качестве возможного обходного пути вы можете резервировать внешний IP-адрес каждый раз, когда вы хочу это изменить. Пожалуйста, взгляните на мои шаги ниже:

  1. создать экземпляр ВМ:
$ 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 или запросите функцию , чтобы избежать перенастройки вручную.

...