建立具有多個網路介面的 VM
本頁說明如何建立具備多個網路介面的 VM 執行個體。
開始之前,請先熟悉多個網路介面總覽中說明的多個網路介面執行個體特性。
IAM 角色
如要建立內含多個網路介面的執行個體,您必須具備以下其中一種角色:
- 專案擁有者或編輯者角色
- Compute 執行個體管理員 (v1) 角色 (
roles/compute.instanceAdmin.v1
)
在未使用共用 VPC 環境的專案中,建立及刪除具有多個介面的執行個體和執行個體範本:如果使用者具有「擁有者」、「編輯者」或「Compute Instance Admin (v1)」角色,即可建立執行個體,並將多個介面與屬於同一專案的 VPC 網路和子網路建立關聯。
在共用 VPC 環境中建立及刪除具有多個介面的執行個體和執行個體範本:
擁有者、編輯者或 Compute Instance Admin (v1) 角色的使用者可以建立具有多個介面的執行個體。如有任何介面附加至共用虛擬私有雲主專案中的子網路,您也必須擁有整個主專案或所需子網路的Compute Network User 角色 (roles/compute.networkUser
)。
如要進一步瞭解權限,請參閱 Compute Engine 身分與存取權管理說明文件。
建立具備多個網路介面的 VM 執行個體
本節說明如何建立具備多個網路介面的執行個體,包括 vNIC 和動態 NIC。如需建立執行個體的一般操作說明,請參閱「建立及啟動 VM 執行個體」。
系統一律會將第一個介面建立為 nic0
,這也一定會是預設介面。
主控台
前往 Google Cloud 控制台的「Create an instance」(建立執行個體) 頁面。
在「Name」(名稱) 欄位中,輸入執行個體的名稱。
在「Region」(區域) 欄位中選取區域。
在「Zone」(可用區) 欄位中,選取可用區。
在「Advanced options」(進階選項) 專區中,展開「Networking」(網路),然後執行下列操作:
在「網路介面」部分,展開要編輯的網路介面。
在「Network」(網路) 和「Subnetwork」(子網路) 中,選取要使用的網路和子網路。
如要在介面上設定 IPv6 位址,請選取已設定 IPv6 位址範圍的子網路。子網路的 IPv6 存取權類型會決定執行個體接收內部 IPv6 位址或外部 IPv6 位址。
為介面選取下列其中一個 IP 堆疊類型選項:
- IPv4 (單一堆疊)
- IPv4 和 IPv6 (雙重堆疊)
- IPv6 (單一堆疊) (預覽版)
如果是具有 IPv4 位址的介面,請執行下列操作:
在「主要內部 IPv4 位址」部分,選取下列其中一個選項:
- 臨時 (自動):自動指派新的臨時 IPv4 位址
- 臨時 (自訂):手動指定新的臨時 IPv4 位址
- 清單中保留的靜態內部 IPv4 位址
- 預留靜態內部 IPv4 位址,以預留及指派新的靜態內部 IPv4 位址
在「外部 IPv4 位址」部分,選取下列其中一個選項:
- 臨時:指派新的臨時 IPv4 位址
- 「無」:不指派外部 IPv4 位址
- 清單中預留的靜態 IPv4 位址
- 保留靜態外部 IP 位址,預留並指派新的靜態外部 IPv4 位址
如果介面有 IPv6 位址,請根據連結子網路的存取權類型執行下列操作:
- 在「主要內部 IPv6 位址」部分,選取下列其中一個選項:
- 「臨時 (自動)」:自動指派新的臨時內部 IPv6 位址
- 臨時 (自訂):手動指定新的臨時內部 IPv6 位址
- 清單中保留的靜態內部 IPv6 位址
- 預留靜態內部 IPv6 位址,預留並指派新的靜態內部 IPv6 位址
- 在「外部 IPv6 位址」部分,選取下列其中一個選項:
- 自動分配:自動指派新的臨時外部 IPv6 位址
- 清單中預留的靜態外部 IPv6 位址
- 保留靜態外部 IPv6 位址,預留並指派新的靜態外部 IPv6 位址
- 在「主要內部 IPv6 位址」部分,選取下列其中一個選項:
如要完成修改網路介面,請按一下「Done」(完成)。
如要新增其他介面,請按一下「新增網路介面」。
繼續執行個體建立程序。
點選「建立」。
gcloud
如要在新執行個體上建立網路介面,請使用 gcloud compute instances create
指令。
請針對每個介面分別加入 --network-interface
標記,並在後方接上任何適當的網路金鑰,例如 network
、subnet
、private-network-ip
、address
、external-ipv6-address
和 vlan
。
包含 vlan
鍵會建立動態 NIC。
如果您建立動態 NIC,也必須在建立執行個體後,按照步驟為動態 NIC 設定客體 OS。
如要查看如何建立具有多個介面的執行個體,請參閱設定範例。
這個程式碼片段只說明 --network-interface
旗標,這是建立執行個體時可指定的眾多參數之一。
gcloud compute instances create INSTANCE_NAME \ --zone ZONE \ --network-interface \ network=NETWORK_A,subnet=SUBNET_A, \ stack-type=STACK_TYPE, \ private-network-ip=INTERNAL_IPV4_ADDRESS, \ address=EXTERNAL_IPV4_ADDRESS | no-address, \ internal-ipv6-address=INTERNAL_IPV6_ADDRESS \ ... --network-interface \ network=NETWORK_B,subnet=SUBNET_B, \ stack-type=STACK_TYPE, \ external-ipv6-address=EXTERNAL_IPV6_ADDRESS, \ external-ipv6-prefix-length=96, \ ipv6-network-tier=PREMIUM, \ vlan=VLAN_ID \ ...
更改下列內容:
INSTANCE_NAME
:要建立的執行個體名稱。ZONE
:建立執行個體的區域。NETWORK_A
、NETWORK_B
:介面所連線的網路。SUBNET_A
、SUBNET_B
:介面附加的子網路。STACK_TYPE
:介面的堆疊類型。預設值為
IPV4_ONLY
。指定IPV4_IPV6
可設定雙重堆疊介面,指定IPV6_ONLY
則可設定僅限 IPv6 的介面 (搶先版)。具有 IPv4 位址的介面值:
INTERNAL_IPV4_ADDRESS
:您希望介面在目標子網路中擁有的內部 IPv4 位址。如果只想指派任何有效地址,請省略此步驟。EXTERNAL_IPV4_ADDRESS
:介面的外部 IPv4 位址。您必須事先預留外部 IPv4 位址。如果您不希望介面有外部 IP 位址,請指定「no-address」,而非
address=EXTERNAL_IPV4_ADDRESS
。如要讓介面接收臨時外部 IP 位址,請指定address=''
。
具有 IPv6 位址的介面值:
INTERNAL_IPV6_ADDRESS
:您希望介面在目標子網路中擁有的內部 IPv6 位址。如未指定,Google Cloud 會從子網路自動指派內部 IPv6 位址。EXTERNAL_IPV6_ADDRESS
:您希望介面在目標子網路中擁有的外部 IPv6 位址。如未指定,Google Cloud 會自動從子網路指派外部 IPv6 位址。
VLAN_ID
:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。您必須在指令中,將 Dynamic NIC 放在上層 vNIC 後面。
API
使用 instances.insert
方法建立具有多個網路介面的執行個體。
包含 vlan
欄位會建立動態 NIC。
如果您建立動態 NIC,也必須在建立執行個體後,按照步驟為動態 NIC 設定客體 OS。
請參閱以下例子:
如要建立只有內部 IPv4 位址的執行個體,請按照下列步驟操作:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "networkIP": "IPV4_ADDRESS_A", "subnetwork": "regions/REGION/subnetworks/SUBNET_A" }, { "networkIP": "IPV4_ADDRESS_B", "subnetwork": "regions/REGION/subnetworks/SUBNET_B" "vlan": "VLAN_ID" }, for each interface, specify a network... ], other instance settings... }
更改下列內容:
PROJECT_ID
:包含執行個體的專案 ID。ZONE
:包含執行個體的區域。IPV4_ADDRESS_A
、IPV4_ADDRESS_B
:要指派給每個網路介面的內部 IPv4 位址。REGION
:包含執行個體的區域。SUBNET_A, SUBNET_B
:每個網路介面所在的子網路。VLAN_ID
:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。您必須在要求中,將 Dynamic NIC 放在上層 vNIC 之後。
如要建立同時具有內部 IPv4 和內部 IPv6 位址的執行個體,請按照下列步驟操作:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "subnetwork": "regions/REGION/subnetworks/SUBNET_A" "ipv6Address": "IPV6_ADDRESS_A", "internalIpv6PrefixLength": 96, "stackType": IPV4_IPV6, "ipv6AccessType": INTERNAL }, { "subnetwork": "regions/REGION/subnetworks/SUBNET_B" "ipv6Address": "IPV6_ADDRESS_B", "internalIpv6PrefixLength": 96, "stackType": IPV4_IPV6, "ipv6AccessType": INTERNAL "vlan": "VLAN_ID" }, for each interface, specify a network... ], other instance settings... }
更改下列內容:
PROJECT_ID
:包含執行個體的專案 ID。ZONE
:包含執行個體的區域。REGION
:包含執行個體的區域。SUBNET_A, SUBNET_B
:每個網路介面所在的子網路。IPV6_ADDRESS_A, IPV6_ADDRESS_B
:您希望介面在目標子網路中擁有的內部 IPv6 位址。如未指定,Google Cloud 會從子網路自動指派內部 IPv6 位址。VLAN_ID
:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。Dynamic NIC 必須置於上層 vNIC 之後。
如要建立僅具備內部 IPv6 位址的執行個體 (搶先版),請按照下列步驟操作:
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances { .... "networkInterfaces": [ { "subnetwork": "regions/REGION/subnetworks/SUBNET" "ipv6Address": "IPV6_ADDRESS", "internalIpv6PrefixLength": 96, "stackType": IPV6_ONLY, "ipv6AccessType": INTERNAL }, for each interface, specify a network... ], other instance settings... }
更改下列內容:
PROJECT_ID
:包含執行個體的專案 ID。ZONE
:包含執行個體的區域。REGION
:包含執行個體的區域。SUBNET
:網路介面所在的子網路。IPV6_ADDRESS
:您希望介面在目標子網路中擁有的內部 IPv6 位址。如未指定,Google Cloud 會自動從子網路指派內部 IPv6 位址。
Terraform
您可以使用 Terraform 資源建立具有多個網路介面的執行個體。
Terraform 引數含有可變更的範例值。
如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。
設定範例
以下各節說明如何建立具有多個介面的執行個體。
設定多個 vNIC 和動態 NIC
下列範例指令會建立具有下列網路介面的執行個體:- 名為
nic0
的 vNIC,是下列項目的父項:- 名為
nic0.2
的動態 NIC
- 名為
- 名為
nic1
的 vNIC,是下列項目的父項:- 名為
nic1.4
的動態 NIC - 名為
nic1.5
的動態 NIC
- 名為
gcloud beta compute instances create vm1 \ --zone zone-a \ --network-interface=network=network-a,subnet=subnet-a \ --network-interface=network=network-b,subnet=subnet-b,vlan=2 \ --network-interface=network=network-c,subnet=subnet-c \ --network-interface=network=network-d,subnet=subnet-d,vlan=4 \ --network-interface=network=network-e,subnet=subnet-e,vlan=5
建立具有動態 NIC 的執行個體後,您也必須為動態 NIC 設定客體 OS。
設定多個只有 IPv4 位址的網路介面
下列範例指令會建立具有三個網路介面的執行個體。
gcloud compute instances create vm1 --machine-type=n1-standard-4 \ --network-interface '' \ --network-interface network=net1,subnet=subnet-a,private-network-ip=10.10.10.2,address=EXTERNAL_IPV4_ADDRESS \ --network-interface network=net2,subnet=subnet-b,private-network-ip=10.10.20.2,no-address
介面的建立情況如下:
nic0
會以預設設定建立。這個介面會附加至預設虛擬私有雲網路中的子網路,並具有系統自動分配的內部 IP 位址,以及臨時的外部 IP 位址。nic1
會附加至網路net1
中的子網路subnet-a
,內部 IPv4 位址為10.10.10.2
,靜態外部 IPv4 位址為EXTERNAL_IPV4_ADDRESS
。nic2
會連結至網路net2
中的子網路subnet-b
,內部 IPv4 位址為10.10.20.2
,沒有外部 IP 位址。
如需完整瞭解 gcloud compute instances create
指令和 --network-interface
標記,請參閱指令說明文件。
您可以使用已新增的網路介面 IP 位址設定 DNS 轉送。如要進一步瞭解如何設定 Cloud DNS 轉送區域,請參閱「轉送區域」。
設定多個網路介面,同時使用 IPv4 和 IPv6 位址
下列範例指令會建立具有兩個網路介面的雙堆疊執行個體。
gcloud compute instances create vm1 \ --network-interface network=dual-int,subnet=int-subnet,stack-type=IPV4_IPV6 \ --network-interface network=dual-ext,subnet=ext-subnet,stack-type=IPV4_IPV6,ipv6-network-tier=PREMIUM \ --machine-type=n1-standard-4 --zone=ZONE_A
介面的建立情況如下:
nic0
會連結至網路dual-int
中的子網路int-subnet
,並具有臨時內部 IPv4 位址和臨時內部 IPv6 位址。nic1
會連結至網路dual-ext
中的子網路ext-subnet
,並具有臨時內部 IPv4 位址和臨時外部 IPv6 位址。
設定多個只有 IPv6 位址的網路介面
下列範例指令會建立具有三個網路介面的「僅限 IPv6」執行個體 (預覽版)。
gcloud compute instances create vm1 \ --network-interface network=ipv6-only-int-a,subnet=int-subnet-a,stack-type=IPV6_ONLY \ --network-interface network=ipv6-only-int-b,subnet=int-subnet-b,stack-type=IPV6_ONLY,internal-ipv6-address=fd20:db8:0:0:1:0:: \ --network-interface network=ipv6-only-ext,subnet=ext-subnet,stack-type=IPV6_ONLY,ipv6-network-tier=PREMIUM,external-ipv6-address=EXTERNAL_IPV6_ADDRESS \ --machine-type=n1-standard-4 --zone=us-west2-a
介面的建立情況如下:
nic0
會連結至網路ipv6-only-int-a
中的子網路int-subnet-a
,並自動分配臨時的內部 IPv6 位址。nic1
會連結至網路ipv6-only-int-b
中的子網路int-subnet-b
,並具有自訂的臨時內部 IPv6 位址fd20:db8:0:0:1:0::/96
。nic2
已附加至網路ipv6-only-ext
中的子網路ext-subnet
,並具有靜態外部 IPv6 位址EXTERNAL_IPV6_ADDRESS
。
為執行個體群組設定多個網路介面
您可以在非代管執行個體群組和代管執行個體群組中使用具有多個網路介面的執行個體。
如果是非代管執行個體群組,請個別建立每個執行個體,並確保每個執行個體的 nic0
網路介面都附加至相同子網路。然後將執行個體新增至非代管執行個體群組。
如要為受管理執行個體群組設定多個網路介面,您必須在執行個體範本中,為每個介面指定網路設定,方法是為每個介面設定一次 --network-interface
旗標。下列範例會建立具有三個網路介面的執行個體範本:
gcloud compute instance-templates create template-1 \ --network-interface subnet=net0-subnet-a \ --network-interface subnet=net1-subnet-b,no-address \ --network-interface subnet=net2-subnet-c,no-address \ --region REGION_A
由於專案中每個地區的子網路名稱不得重複,因此依名稱指定子網路時,每個介面都會隱含地與 VPC 網路建立關聯。每個介面都必須使用位於不重複 VPC 網路中的子網路:
- 「
nic0
」使用「net0-subnet-a
」子網路 - 「
nic1
」使用「net1-subnet-b
」子網路 - 「
nic2
」使用「net2-subnet-c
」子網路
--network-interface
旗標中的 no-address
選項表示介面已設定,但沒有外部 IPv4 位址。內部 IP 位址來自介面使用的子網路。如要完整瞭解標記和語法,請參閱 instance-templates create
指令的 --network-interface
標記。