建立具有多個網路介面的 VM
本頁面說明如何建立具備多個網路介面的 VM 執行個體。
開始前,請務必熟悉「多個網路介面總覽」一文中所述,具有多個網路介面的執行個體特性。
IAM 角色
如要建立內含多個網路介面的執行個體,您必須具備以下其中一種角色:
- 專案擁有者或編輯者角色
- Compute 執行個體管理員 (v1) 角色 (
roles/compute.instanceAdmin.v1
)
在未使用共用虛擬私人雲端環境的專案中,建立及刪除具有多個介面的執行個體和執行個體範本:擁有擁有者、編輯者或 Compute 執行個體管理員 (v1) 角色的使用者,可以建立具有多個介面的執行個體,這些介面與同一個專案中的 VPC 網路和子網路相關聯。
在共用 VPC 環境中建立及刪除含有多個介面的執行個體和執行個體範本:具有「Owner」、「Editor」或「Compute Instance Admin (v1)」角色的使用者可以建立含有多個介面的執行個體。如果任何介面都已連結至共用虛擬私有雲主專案中的子網路,您也必須為整個主專案或您要使用的子網路,設定Compute 網路使用者角色 (roles/compute.networkUser
)。
如要進一步瞭解權限,請參閱 Compute Engine 身分與存取權管理說明文件。
建立具備多個網路介面的 VM 執行個體
本節說明如何建立具備多個網路介面的執行個體,包括 vNIC 和動態 NIC。如需建立執行個體的一般操作說明,請參閱「建立及啟動 VM 執行個體」。
系統一律會將第一個介面建立為 nic0
,這也一定會是預設介面。
主控台
前往 Google Cloud 控制台的「Create an instance」頁面。
在「Name」欄位中輸入執行個體的名稱。
在「Region」欄位中選取區域。
在「Zone」(可用區) 欄位中,選取可用區。
在「Advanced options」部分展開「Networking」,然後執行下列操作:
在「Network interfaces」(網路介面) 專區中,展開網路介面進行編輯。
在「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 的訪客作業系統的步驟操作。
如需建立具有多個介面的執行個體的範例,請參閱設定範例。
這個程式碼片段只說明 --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 位址。您必須先預留外部 IPv6 位址。如未指定,Google Cloud 會自動從子網路指派外部 IPv6 位址。
VLAN_ID
:VLAN ID。指定 VLAN ID 會將網路介面設定為 Dynamic NIC。您必須在指令中將 Dynamic NIC 放在其上層 vNIC 之後。
API
使用 instances.insert
方法建立具備多個網路介面的執行個體。
加入 vlan
欄位會建立動態網路介面卡。如果您建立動態 NIC,則必須在建立執行個體後,按照設定動態 NIC 的訪客作業系統的步驟操作。
請參閱以下例子:
如要建立僅具備內部 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。您必須在上層 vNIC 要求後放置 Dynamic NIC。
如要建立同時具備內部 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
的動態網路介面卡
- 名為
- 名為
nic1
的 vNIC,是下列項目的父項:- 名為
nic1.4
的動態網路介面卡 - 名為
nic1.5
的動態網路介面卡
- 名為
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 設定來賓作業系統。
設定僅含 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 執行個體 (Preview)。
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
標記。