在貴組織的內部虛擬私有雲 (VPC) 或預設 VPC 中建立其他子網路,以支援內部網路需求。例如,新增虛擬私有雲子網路,確保虛擬機器 (VM) 和容器等內部工作負載有足夠的 IP 位址。
本頁列出多項工作,不一定要按照順序完成:
- 建立工作負載的可用區分支子網路:這項工作有助於進一步整理可用區現有的內部 IP 位址,或將這些位址分配給工作負載。
- 為個別工作負載建立葉子子網路:如果新的工作負載尚未有可用的 IP 位址,這項工作就很有用。
- 從全域 IP 位址範圍分配可用區子網路:如果可用區沒有足夠的內部 IP 位址空間,這項工作就很有用。
- 劃分根全域子網路,不分配可用區:這項工作有助於進一步整理全域 API 伺服器中的內部 IP 位址,再分配給可用區。
- 新增網路根範圍全域子網路:如果預設虛擬私有雲沒有足夠的全域內部 IP 位址空間可分配給可用區,這項工作就非常實用。
如要先概略瞭解子網路和相關概念,再完成本頁的工作,請參閱「子網路和 IP 位址」。
本文適用於負責管理組織網路流量的平台管理員和應用程式操作員。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。
事前準備
如要取得建立子網路所需的權限,請要求 IAM 機構組織管理員授予您子網路機構組織管理員 (subnet-org-admin) IAM 角色。這個角色未繫結至命名空間。
為工作負載建立可用區分支子網路
如要進一步細分可用區預設虛擬私有雲中的 IP 位址,您可以從可用區現有的可用區根子網路,建立可用區內部子網路。您必須在 platform 命名空間中建立這個子網路類型。
如果上層可用區根子網路沒有足夠的可用 IP 位址,請先從全域 IP 位址範圍分配另一個可用區子網路,再繼續操作。
在終端機視窗中,於 Management API 伺服器建立新的可用區子網路:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH networkSpec: enableGateway: true enableVLANID: false parentReference: name: PARENT_SUBNET_NAME namespace: platform type: Branch EOF更改下列內容:
MANAGEMENT_API_SERVER_KUBECONFIG:管理 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「可用區管理 API 伺服器資源」。SUBNET_NAME:新網路子網路的名稱。CIDR_PREFIX_LENGTH:新子網路的前置字元長度,例如27。這個欄位會從上層子網路,動態分配下一個可用且大小相同的 IP 位址範圍。如果您只在乎子網路的大小,而不在乎其特定 IP 位址範圍,請使用prefixLength欄位。如要改為指派特定 IP 位址範圍,請按照下列步驟操作:
- 移除
prefixLength: CIDR_PREFIX_LENGTH行。 - 在該位置新增
cidr: "YOUR_CIDR_BLOCK"行,例如cidr: "10.0.10.0/27"。
如果您遵循嚴格的 IP 方案,且需要指派精確、可預測的 IP 位址範圍,請使用
cidr欄位。這個範圍必須是上層子網路中有效且可用的子網路。- 移除
PARENT_SUBNET_NAME:父項子網路的名稱,例如default-vpc-zone0-cidr。上層子網路通常是預設虛擬私有雲中的可用區根子網路。
詳情請參閱
Subnet資源的 API 參考文件。您可以繼續細分可用區子網路,或建立葉子網路,直接將個別 IP 位址分配給內部工作負載。
為個別工作負載建立葉子網路
如要為工作負載分配單一 IP 位址,必須建立葉子子網路。這個葉子子網路的欄位值必須為 type: Leaf,且必須與工作負載資源 (例如 VM 或容器) 位於相同的專案命名空間。
葉子子網路必須設定 32 的 prefixLength 值,因為其用途是分配單一 IP 位址。parentReference 值會參照先前分配的子網路,例如您在「為工作負載建立可用區分支子網路」中建立的父項可用區子網路。
在終端機視窗中,於 Management API 伺服器建立葉子子網路:
kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc name: SUBNET_NAME namespace: PROJECT_NAMESPACE spec: ipv4Request: prefixLength: 32 parentReference: name: PARENT_SUBNET namespace: PARENT_NAMESPACE type: Leaf EOF更改下列內容:
MANAGEMENT_API_SERVER_KUBECONFIG:管理 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「可用區管理 API 伺服器資源」。SUBNET_NAME:葉子網路的名稱。PROJECT_NAMESPACE:工作負載所在專案對應的專案命名空間。PARENT_SUBNET:父項子網路的名稱,這個葉子網路會從該子網路取得 IP 位址。PARENT_NAMESPACE:PROJECT_NAMESPACE或platform命名空間。
您的個別 IP 位址現在可供內部工作負載 (例如 VM 和容器) 使用。如要進一步瞭解如何設定工作負載的 IP 位址,請參閱「建立具有靜態或動態 IP 位址的 VM」或「設定容器工作負載的內部負載平衡器」。
從全域 IP 位址範圍分配可用區子網路
如果可用區現有的可用區根子網路 IP 位址範圍,無法為工作負載提供足夠的 IP 位址,您可以從全域 IP 位址根範圍分配額外的 IP 位址。
如要從全域 IP 位址範圍分配可用區子網路,請在 platform 命名空間中,對預設虛擬私有雲網路完成下列步驟:
在終端機視窗中,描述預設虛擬私有雲的所有根子網路,並查看可用的 CIDR 區塊:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range將
GLOBAL_API_SERVER_KUBECONFIG替換為全域 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「全域 API 伺服器資源」。標籤是常數,必須保持不變。輸出結果會與下列內容相似:
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>請記下
Status.ipv4Allocation.Available CIDRs值。這些值是下一個步驟會參照的可用 CIDR 區塊。在上述輸出內容中,CIDR 範圍10.254.0.0/15和10.253.0.0/16可用。輸出內容可能會顯示多個子網路。記下所有可用的 CIDR 區塊及其來源子網路。將上一步中最大的可用 CIDR 區塊,與可用區所需的 CIDR 區塊大小進行比較。如果可用的最大 CIDR 區塊不足以分配新的子網路,請先新增網路根範圍全域子網路,再繼續操作。請記下您決定從哪個父項子網路取得新子網路的 CIDR 區塊。
舉例來說,如果您需要
/13CIDR 區塊,但可用的 CIDR 僅包含/15和/16,則必須新增網路根範圍全域子網路。如需/15子網路,可以從現有的/15CIDR 區塊分配新的可用區子網路。在全域 API 伺服器中建立新的子網路:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH zone: ZONE_NAME propagationStrategy: SingleZone type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF更改下列內容:
GLOBAL_API_SERVER_KUBECONFIG:全域 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「全域 API 伺服器資源」。SUBNET_NAME:新子網路的名稱。CIDR_PREFIX_LENGTH:動態分配的新子網路 CIDR 前置字串長度,例如20。如要以靜態方式設定 CIDR,請將prefixLength欄位替換為cidr欄位,然後設定 CIDR 區塊,例如10.0.10.0/27。ZONE_NAME:要分配子網路的可用區,例如zone1。PARENT_SUBNET_NAME:父項子網路的名稱,例如default-vpc-root-cidr,或您建立的新網路根範圍全域子網路。ORG_NAME:組織名稱。
詳情請參閱
Subnet資源的 API 參考文件。確認子網路已就緒,且可在全域 API 伺服器中使用,方法是檢查其狀態
Ready類型是否為true:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'輸出結果會與下列內容相似:
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready確認可用區子網路是在可用區 Management API 伺服器中建立,且其狀態
Ready類型為true:kubectl --kubeconfig MANAGEMENT_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'將
MANAGEMENT_API_SERVER_KUBECONFIG替換為管理 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「可用區管理 API 伺服器資源」。輸出結果會與下列內容相似:
status: conditions: - lastTransitionTime: "2025-06-06T07:29:34Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready在這個新的可用區子網路中,您可以建立更多可用區子子網路,或直接將個別 IP 位址分配給內部工作負載。
劃分根全域子網路,不分配可用區
如要進一步劃分全域子網路,而不將其分配至可用區,請建立全域子網路,並在 Subnet 自訂資源中省略傳播策略。如果您想繼續從全域根子網路管理可全域存取的 IP 位址範圍,而不將 IP 位址分配給可用區,這種做法就很實用。
如要在全域範圍內劃分全域根子網路,請在 platform 命名空間中完成下列步驟:
在終端機視窗中,描述所有預設虛擬私有雲的根子網路,並檢查可用的 CIDR 區塊:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG describe subnets --namespace platform \ -l ipam.gdc.goog/vpc=default-vpc,ipam.gdc.goog/usage=network-root-range將
GLOBAL_API_SERVER_KUBECONFIG替換為全域 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「全域 API 伺服器資源」。標籤是常數,必須保持不變。輸出結果會與下列內容相似:
Name: default-vpc-root-cidr Namespace: platform Labels: ipam.gdc.goog/allocation-preference=default ipam.gdc.goog/subnet-group=default-vpc-root-group ipam.gdc.goog/usage=network-root-range ipam.gdc.goog/vpc=default-vpc Annotations: <none> API Version: ipam.global.gdc.goog/v1 Kind: Subnet Metadata: Creation Timestamp: 2025-06-18T23:05:38Z Finalizers: global-subnet-finalizer Generation: 1 Resource Version: 439434 UID: 5ed1c51a-b5ee-473e-a185-8e065a87ae8f Spec: ipv4Request: Cidr: 10.252.0.0/14 Propagation Strategy: None Type: Root Status: Children Refs: Name: default-vpc-zone1-root-cidr Namespace: platform Type: SingleSubnet Conditions: Last Transition Time: 2025-06-18T23:05:38Z Message: IP allocation finished successfully Observed Generation: 1 Reason: AllocationSucceeded Status: True Type: Ready ipv4Allocation: Available CIDRs: 10.254.0.0/15 10.253.0.0/16 Cidr: 10.252.0.0/14 Events: <none>請記下
Status.ipv4Allocation.Available CIDRs值。這些值是下一個步驟會參照的可用 CIDR 區塊。在上述輸出內容中,CIDR 範圍10.254.0.0/15和10.253.0.0/16可用。輸出內容中可能有多個子網路,具體取決於根子網路的數量,因此請記下所有可用的 CIDR 區塊,以及可用 CIDR 區塊來自哪個子網路。比較上一步中最大的可用 CIDR 區塊,以及新全域子網路所需的 CIDR 區塊大小。如果可用的最大 CIDR 區塊不足以分配新的子網路,請先新增網路根範圍全域子網路,再繼續操作。請記下您決定從哪個父項子網路取得新子網路的 CIDR 區塊。
舉例來說,如果您需要
/13CIDR 區塊,但可用的 CIDR 僅包含/15和/16,則必須建立新的網路根範圍全域子網路。如需/15子網路,可以從現有的/15CIDR 區塊分配新的全域子網路。在全域 API 伺服器中建立新的子網路:
kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: zone-network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: prefixLength: CIDR_PREFIX_LENGTH propagationStrategy: None type: Branch parentReference: name: PARENT_SUBNET_NAME namespace: ORG_NAME EOF更改下列內容:
GLOBAL_API_SERVER_KUBECONFIG:全域 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「全域 API 伺服器資源」。SUBNET_NAME:新子網路的名稱。CIDR_PREFIX_LENGTH:動態分配的新子網路 CIDR 前置字串長度,例如20。如要以靜態方式設定 CIDR,請將prefixLength欄位替換為cidr欄位,然後設定 CIDR 區塊,例如10.0.10.0/27。PARENT_SUBNET_NAME:父項子網路的名稱,例如default-vpc-root-cidr,或您建立的新網路根範圍全域子網路。ORG_NAME:組織名稱。
詳情請參閱全域
Subnet資源的 API 參考文件。確認子網路已就緒,且可在全域 API 伺服器中使用,方法是檢查其狀態
Ready類型是否為true:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG get subnet --namespace platform \ SUBNET_NAME --output jsonpath='{.status.conditions[?(@.type=="Ready")].status}'輸出結果會與下列內容相似:
status: conditions: - lastTransitionTime: "2025-06-06T07:28:48Z" message: IP allocation finished successfully observedGeneration: 1 reason: AllocationSucceeded status: "True" type: Ready
貴組織在預設虛擬私有雲中的新全域子網路已可使用。您可以從這個新的全域父項子網路為特定可用區建立子網路。
新增網路根範圍全域子網路
標有 ipam.gdc.goog/usage: network-root-range 的全域子網路會託管網路所有可用區的 CIDR。如果 CIDR 已用盡,您必須在全域 API 伺服器中建立新的網路根範圍子網路。您可以視需要建立多個根全域子網路。
如要建立新的網路根範圍子網路,請完成下列步驟:
在終端機視窗中,為
platform命名空間中的預設虛擬私有雲,建立新的網路根範圍全域子網路:kubectl --kubeconfig GLOBAL_API_SERVER_KUBECONFIG apply -f - <<EOF apiVersion: ipam.global.gdc.goog/v1 kind: Subnet metadata: labels: ipam.gdc.goog/vpc: default-vpc ipam.gdc.goog/usage: network-root-range name: SUBNET_NAME namespace: platform spec: ipv4Request: cidr: NEW_CIDR type: Root EOF更改下列內容:
GLOBAL_API_SERVER_KUBECONFIG:全域 API 伺服器的 kubeconfig 檔案路徑。詳情請參閱「全域 API 伺服器資源」。SUBNET_NAME:新子網路的名稱。NEW_CIDR:子網路的新 CIDR。這個 CIDR 不得與相同全域 API 伺服器中,所有具有ipam.gdc.goog/usage: network-root-range標籤的現有子網路中的任何 CIDR 重疊。
這個新的全域根範圍子網路可以在全域 API 伺服器中細分,或分配給特定可用區。