配置 VPC 子網路

虛擬私有雲

透過在您的 Red Hat® OpenShift® on IBM Cloud® VPC 叢集中新增子網,來變更可用的可攜式公網或私網 IP 位址池。

本頁面的內容專指 VPC 叢集。 如需標準叢集的相關資訊,請參閱 配置標準叢集的子網路及 IP 位址

Red Hat OpenShift on IBM Cloud 中 VPC 網路的概觀

了解 Red Hat OpenShift on IBM Cloud 叢集中 VPC 網路的基本概念。

子網路

在首次建立 VPC 叢集之前,您必須在每個欲部署工作節點的區域中 建立一個 VPC 子網。 VPC 子網是一個指定的私有 IP 位址範圍(CIDR 區塊),其配置方式可讓一組工作節點和 Pod 彷彿連接到同一條實體線路一般。

建立叢集時,只能為每個區域指定一個現有 VPC 子網路。 在叢集裡新增的每個工作者節點都將使用該區域中 VPC 子網路中的專用 IP 位址進行部署。 佈建工作者節點後,工作者節點 IP 位址會在 reboot 作業之後持續保存,但工作者節點 IP 位址在 replaceupdate 作業之後會變更。

在建立叢集期間或在區域中新增工作者節點時,請勿刪除您連接至叢集的子網路。 如果您刪除叢集使用的 VPC 子網路,則使用子網路中 IP 位址的任何負載平衡器可能會遇到問題,而且您可能無法建立新的負載平衡器。

我的 VPC 子網路需要多少 IP 位址?

當您 建立 VPC 子網路時,請確保為叢集建立具有足夠 IP 位址的子網路,例如 256。 您無法在事後變更 VPC 子網所擁有的 IP 位址數量。

請記住下列 IP 位址保留。

  • 依預設,來自每一個子網路的 5 個 IP 位址 由 VPC 保留
  • 虛擬專用端點(VPE)閘道 需要來自叢集具有工作者節點之每個區域中一個子網路的 1 個 IP 位址。
  • 叢集裡每個工作者節點需要 1 個 IP 位址。
  • 每次更新或取代工作者節點時都需要 1 個 IP 位址。 這些 IP 位址最終會收回並可供重複使用。
  • 每次建立公用或專用負載平衡器時,都會使用 2 個 IP 位址。 如果您具有多區域叢集,則這 2 個 IP 位址會分散在各區域中,因此子網路可能沒有保留 IP 位址。
  • 您為叢集設定的其他網路資源 (例如 VPNaaS 或 LBaaS 自動調整) 可能需要其他 IP 位址或具有其他 服務限制。 例如,LBaaS 自動調整可能會針對每個負載平衡器擴增至 16 個 IP 位址。

我可以將哪些 IP 範圍用於 VPC 子網路?

VPC 子網路的預設 IP 位址範圍是 10.0.0.0- 10.255.255.255。 如需各 VPC 區域的 IP 位址範圍清單,請參閱 VPC 預設位址前綴

如果您需要使用自訂範圍子網路來建立叢集,請參閱 自訂位址字首 的指引。 不過,如果您對工作者節點使用自訂範圍子網路,則必須確保工作者節點子網路的 IP 範圍不會與叢集的 Pod 子網路重疊。

  • 如果您在叢集建立期間於 --pod-subnet 選項中指定自己的 Pod 子網路,則 Pod 會獲指派此範圍的 IP 位址。
  • 如果您在叢集建立期間未指定自訂 Pod 子網路,則叢集會使用預設 Pod 子網路。 在 VPC 中建立的第一個叢集裡,預設 Pod 子網路為 172.17.0.0/18。 在您於該 VPC 中建立的第二個叢集裡,預設 Pod 子網路為 172.17.64.0/18。 在每一個後續叢集裡,Pod 子網路範圍是下一個可用的非重疊 /18 子網路。

如何建立子網路以進行標準基礎架構存取?

如果您在建立 VPC 時啟用標準存取權,則 標準存取預設位址字首 會自動決定您所建立任何子網路的 IP 範圍。 不過,標準存取 VPC 子網路的預設 IP 範圍與 Red Hat OpenShift on IBM Cloud 控制平面的子網路相衝突。 相反地,您必須 建立不含自動預設位址字首的 VPC,然後為叢集建立自己的位址字首及那些範圍內的子網路

我可以指定叢集裡 Pod 及服務的子網路嗎?

如果您計劃透過 IBM Cloud Direct Link 或 VPN 服務將叢集連接至內部部署網路,則可以透過指定為 Pod 提供專用 IP 位址的自訂子網路 CIDR,以及為服務提供專用 IP 位址的自訂子網路 CIDR,來避免子網路衝突。

若要在建立叢集期間指定自訂 Pod 及服務子網路,請使用 ibmcloud oc cluster create CLI 指令中的 --pod-subnet--service-subnet 選項。

若要查看叢集使用的 Pod 及服務子網路,請在 ibmcloud oc cluster get 的輸出中尋找 Pod SubnetService Subnet 欄位。

Pods

預設範圍

在 VPC 中建立的第一個叢集裡,預設 Pod 子網路為 172.17.0.0/18。 在您於該 VPC 中建立的第二個叢集裡,預設 Pod 子網路為 172.17.64.0/18。 在每一個後續叢集裡,Pod 子網路範圍是下一個可用的非重疊 /18 子網路。

大小需求

在指定自訂子網時,請考量您計劃建立的叢集規模,以及未來可能新增的執行節點數量。 子網的 CIDR 範圍必須至少為 /23,這能為叢集中最多四個工作節點提供足夠的 Pod IP 位址。 若為較大的叢集,請使用 /22,以具有八個工作者節點的足夠 Pod IP 位址,/21 以具有 16 個工作者節點的足夠 Pod IP 位址,依此類推。

對於 VPC 叢集,您可以在 --pod-subnet 選項中包括子網路大小來指定子網路大小。 例如: --pod-subnet 0.0.0.0/X,其中 X 是必要的 Pod 子網路大小。 然後會自動選取 Pod 子網路。 自動分配 Pod 子網路時,會從 172.17.0.0 開始分配,最大子網路限制為 13,最小子網路限制為 23

工作節點有全局限制。 一個區域內所有群集的工作節點數量不能超過 500 個。

範圍需求

Pod 和服務子網路無法彼此重疊,且 Pod 子網路無法重疊工作者節點的 VPC 子網路。 您選擇的子網路必須在下列其中一個範圍內。

  • 172.17.0.0 - 172.17.255.255

  • 172.21.0.0 - 172.31.255.255

  • 192.168.0.0 - 192.168.254.255

  • 198.18.0.0 - 198.19.255.255

服務

預設範圍
預設情況下,所有部署至叢集的服務都會被指派一個位於 172.21.0.0/16 範圍內的私有 IP 位址。
大小需求
當您指定自訂子網路時,必須以 CIDR 格式指定子網路,大小至少為 /24,這容許叢集裡最多 255 個服務,或更大。
範圍需求
Pod 和服務子網路不能彼此重疊。 您選擇的子網路必須在下列其中一個範圍內。
  • 172.17.0.0 - 172.17.255.255

  • 172.21.0.0 - 172.31.255.255

  • 192.168.0.0 - 192.168.254.255

  • 198.18.0.0 - 198.19.255.255

公用閘道

公用閘道可啟用子網路及連接至子網路的所有工作者節點,以建立網際網路的出埠連線。 如果您的群集同時啟用了公共雲端和私有雲端服務端點,您必須在工作人員節點部署到的 VPC 子網路上啟用 公共閘道,才能在不連接到 VPC 私有網路的情況下存取預設 Red Hat OpenShift 元件。

當您建立 VPC 叢集並在叢集建立期間同時啟用公用及專用雲端服務端點時,依預設會使用公用雲端服務端點來存取叢集的元件,例如 Red Hat OpenShift Web 主控台。 為了讓主控台 Pod 透過公用服務端點透過網際網路建立安全的公用連線,您必須在工作者節點部署至的每一個 VPC 子網路上啟用公用閘道。

當您建立 VPC 叢集並在叢集建立期間僅啟用專用雲端服務端點時,依預設會使用專用雲端服務端點來存取 Red Hat OpenShift 元件,例如 Red Hat OpenShift Web 主控台或 OperatorHub。 您必須連接至專用 VPC 網路 (例如透過 VPN 連線),才能在叢集上存取這些元件或執行 kubectl 指令。 此外,若 IBM Cloud 服務不支援私有雲服務端點,您的工作節點必須連接到一個已連接公共閘道的子網。 這些工作者節點上的 Pod 可以透過子網路的公用閘道在公用網路上安全地與服務進行通訊。 請注意,子網路上無需公用閘道來容許從網際網路到 LoadBalancer 服務或 ALB 的入埠網路資料流量。

在同一個 VPC 內,每個區域只能建立一個公共閘道,但該公共閘道可以連接至該區域內的多個子網。 如需公用閘道的相關資訊,請參閱 VPC 網路說明文件

虛擬專用端點 (VPE)

檢視「了解預設安全的群集 VPC 網路」,以取得有關 VPE 的資訊。

網路分段

網路區隔說明將網路分成多個子網路的方式。 在某個子網路中運行的應用程式無法看見或存取另一個子網路中的應用程式。 如需 VPC 子網路的網路分段選項的相關資訊,請參閱 此叢集安全主題

子網路提供了一個頻道,用於連線功能叢集內的工作者節點。 此外,任何連接至相同 VPC 中任何專用子網路的系統都可以與工作者節點進行通訊。 例如,一個 VPC 中的所有子網路都可以透過專用第 3 層遞送與內建 VPC 路由器進行通訊。

如果您有多個叢集必須相互通訊,則可以在相同 VPC 中建立這些叢集。 不過,如果您的叢集無需相互通訊,您可以透過在不同的 VPC 中建立叢集,來實現更完善的網路分段。 此外,還可以為 VPC 子網路建立存取控制清單 (ACL),以調解專用網路上的資料流量。 ACL 由入埠和出埠規則組成,這些規則定義了每個 VPC 子網路允許的 Ingress 和 Egress。

VPC 網路限制

為叢集建立 VPC 子網路時,請記住下列特性和限制。

  • 每個 VPC 子網路的預設 CIDR 大小為 /24,最多可支援 253 個工作者節點。 如果計劃在一個叢集裡每個區域部署 250 個以上的工作者節點,請考慮建立更大的子網路。
  • 建立 VPC 子網後,您將無法調整其大小或變更其 IP 範圍。
  • 同一 VPC 中的多個叢集可以共用 VPC 子網。 不過,無法在多個叢集之間共用自訂 Pod 及服務子網路。
  • VPC 子網會綁定至單一校園的多區域區域,且無法橫跨多個區域或區域。
  • 建立子網後,您無法將其移至其他區域、區域或 VPC。
  • 若您有工作節點已連接到某個區域中的現有子網,則無法在叢集中變更該區域的子網。
  • 禁止使用 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16 範圍。
  • 在同一個 VPC 內,每個區域只能建立一個公共閘道,但該公共閘道可以連接至該區域內的多個子網。
  • 標準存取預設位址字首 與 Red Hat OpenShift on IBM Cloud 控制平面的子網路衝突。 您必須 建立不含自動預設位址字首的 VPC,然後為叢集建立您自己的位址字首及那些範圍內的子網路

建立 VPC 子網路並連接公用閘道

為叢集建立 VPC 子網路,並選擇性地將公用閘道連接至子網路。

在主控台中建立 VPC 子網路

使用 IBM Cloud 主控台為群集建立 VPC 子網路,並選擇附加公用閘道到子網路。

  1. VPC 子網路儀表板 中,按一下 建立
  2. 輸入子網路的名稱,然後選取已建立的 VPC 的名稱。
  3. 選取要在其中建立子網路的位置和區域。
  4. 指定要建立的 IP 位址數。
    • VPC 子網會為叢集中的工作節點和負載平衡服務提供 IP 位址,因此 請建立一個具備足夠 IP 位址的 VPC 子網,例如 256 個。 您無法在事後變更 VPC 子網所擁有的 IP 位址數量。
    • 如果您輸入特定的 IP 範圍,請不要使用下列保留範圍: 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16
  5. 若要執行預設的 Red Hat OpenShift 元件 (例如 Web 主控台或 OperatorHub, ),並允許您的群集存取公共端點 (例如其他應用程式的公共 URL 或僅支援公共雲端服務端點的 IBM Cloud 服務),您必須在子網路附加公共閘道。
  6. 按一下建立子網路
  7. 使用子網路來 建立叢集建立新的工作者節點儲存區將子網路新增至現有工作者節點儲存區。> 在建立叢集期間或在區域中新增工作者節點時,請勿刪除您連接至叢集的子網路。 如果您刪除叢集使用的 VPC 子網路,則使用子網路中 IP 位址的任何負載平衡器可能會遇到問題,而且您可能無法建立新的負載平衡器。

在 CLI 中建立 VPC 子網路

使用 IBM Cloud CLI 為群集建立 VPC 子網路,並選擇附加公用閘道到子網路。

開始之前

  1. 在命令列中,登入您的 IBM Cloud 帳戶,並選取您要建立 VPC 叢林的 IBM Cloud 區域及資源群組。 如需支援的地區,請參閱在其他地區中建立 VPC。 叢集資源群組可能與 VPC 資源群組不同。 系統提示時,請輸入您的 IBM Cloud 認證。 如果您擁有聯邦式身分識別,請使用「--sso」選項進行登入。
    ibmcloud login -r REGION [-g <resource_group>] [--sso]
    
  2. 在要建立叢集的地區中建立 VPC

若要建立 VPC 子網,請依照以下步驟操作。

  1. 取得您要建立子網的 VPC 的 ID。

    ibmcloud oc vpcs
    
  2. 建立子網路。 如需此指令中選項的相關資訊,請參閱 CLI 參考資料

    ibmcloud is subnet-create SUBNET_NAME VPC_ID --zone VPC_ZONE --ipv4-address-count NUMBER_OF_IP_ADDRESS
    
    • VPC 子網會為叢集中的工作節點和負載平衡服務提供 IP 位址,因此 請建立一個具備足夠 IP 位址的 VPC 子網,例如 256 個。 您無法在事後變更 VPC 子網所擁有的 IP 位址數量。
    • 請勿使用下列保留範圍: 172.16.0.0/16172.18.0.0/16172.19.0.0/16172.20.0.0/16
  3. 檢查您要在其中建立叢集的區域中是否有公用閘道。 在同一個 VPC 內,每個區域只能建立一個公共閘道,但該公共閘道可以連接至該區域內的多個子網。

    ibmcloud is public-gateways
    

    輸出範例

    ID                                     Name                                       VPC                          Zone         Floating IP                  Created                     Status      Resource group
    26426426-6065-4716-a90b-ac7ed7917c63   test-pgw                                   testvpc(36c8f522-.)          us-south-1   169.xx.xxx.xxx(26466378-.)   2019-09-20T16:27:32-05:00   available   -
    2ba2ba2b-fffa-4b0c-bdca-7970f09f9b8a   pgw-73b62bc0-b53a-11e9-9838-f3f4efa02374   team3(ff537d43-.)            us-south-2   169.xx.xxx.xxx(2ba9a280-.)   2019-08-02T10:30:29-05:00   available   -
    
    • 如果您在每一個區域中已有公用閘道,請記下公用閘道的 ID
    • 如果每個區域中都沒有公用閘道,請建立公用閘道。 建議將公共閘道命名為「<cluster>-<zone>-gateway」此類格式。 記下輸出中的公用閘道 ID
    ibmcloud is public-gateway-create <gateway_name> <VPC_ID> <zone>
    

    輸出範例

    ID               26466378-6065-4716-a90b-ac7ed7917c63
    Name             mycluster-us-south-1-gateway
    Floating IP      169.xx.xx.xxx(26466378-6065-4716-a90b-ac7ed7917c63)
    Status           pending
    Created          2019-09-20T16:27:32-05:00
    Zone             us-south-1
    VPC              myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
    Resource group   -
    
  4. 使用公用閘道及子網路的 ID,將公用閘道連接至子網路。

    ibmcloud is subnet-update <subnet_ID> --public-gateway-id <gateway_ID>
    

    輸出範例

    ID                  91e946b4-7094-46d0-9223-5c2dea2e5023
    Name                mysubnet1
    IPv4 CIDR           10.240.xx.xx/24
    Address available   250
    Address total       256
    ACL                 allow-all-network-acl-36c8f522-4f0d-400c-8226-299f0b8198cf(585bc142-5392-45d4-afdd-d9b59ef2d906)
    Gateway             mycluster-us-south-1-gateway(26466378-6065-4716-a90b-ac7ed7917c63)
    Created             2019-08-21T09:43:11-05:00
    Status              available
    Zone                us-south-1
    VPC                 myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
    
  5. 使用子網路來 建立叢集建立新的工作者節點儲存區將子網路新增至現有工作者節點儲存區。 在建立叢集期間或在區域中新增工作者節點時,請勿刪除您連接至叢集的子網路。 如果您刪除叢集使用的 VPC 子網路,則使用子網路中 IP 位址的任何負載平衡器可能會遇到問題,而且您可能無法建立新的負載平衡器。

建立 VPC 子網路以進行標準存取

如果您在建立 VPC 時啟用標準存取權,則 標準存取預設位址字首 會自動決定您所建立任何子網路的 IP 範圍。 不過,標準存取 VPC 子網路的預設 IP 範圍與 Red Hat OpenShift on IBM Cloud 控制平面的子網路相衝突。 您必須改為建立不含自動預設位址字首的 VPC,並建立您自己的位址字首。 然後,每當您為叢集建立子網路時,都會在您建立的位址字首範圍內建立子網路。

在主控台中建立 VPC 子網路以進行標準存取

  1. 建立不含預設位址字首的標準存取 VPC。
    1. Virtual Private Clouds 儀表板 中,按一下 建立
    2. 輸入名稱、資源群組及任何標籤的詳細資料。
    3. 選取 啟用標準資源的存取權的勾選框,並清除 為每一個區域建立預設字首的勾選框。
    4. 選取 VPC 的區域。
    5. 按一下建立虛擬專用雲端
  2. 在每一個區域中建立位址字首。
    1. 按一下 VPC 的名稱以檢視其詳細資料。
    2. 按一下 位址字首 標籤,然後按一下 建立
    3. 對於計劃在其中建立子網路的每個區域,建立一個以上的位址字首。 位址字首必須在下列其中一個範圍內: 10.0.0.0 - 10.255.255.255172.17.0.0 - 172.17.255.255172.21.0.0 - 172.31.255.255192.168.0.0 - 192.168.254.255
  3. 建立使用您的位址字首的子網路。
    1. VPC 子網路儀表板 中,按一下 建立
    2. 輸入子網路的名稱,並選取標準存取 VPC 的名稱。
    3. 選取要在其中建立子網路的位置和區域。
    4. 選取您為此區域建立的位址字首。
    5. 指定要建立的 IP 位址數。 VPC 子網會為叢集中的工作節點和負載平衡服務提供 IP 位址,因此 請建立一個具備足夠 IP 位址的 VPC 子網,例如 256 個。 您無法在事後變更 VPC 子網所擁有的 IP 位址數量。
    6. 若要執行預設的 Red Hat OpenShift 元件 (例如 Web 主控台或 OperatorHub, ),並允許您的群集存取公共端點 (例如其他應用程式的公共 URL 或僅支援公共雲端服務端點的 IBM Cloud 服務),您必須在子網路附加公共閘道。
    7. 按一下建立子網路
  4. 使用子網路來 建立叢集。 在建立叢集期間或在區域中新增工作者節點時,請勿刪除您連接至叢集的子網路。 如果您刪除叢集使用的 VPC 子網路,則使用子網路中 IP 位址的任何負載平衡器可能會遇到問題,而且您可能無法建立新的負載平衡器。

從 CLI 建立 VPC 子網路以進行標準存取

  1. 在命令列中,登入您的 IBM Cloud 帳戶,並選取您要建立 VPC 叢林的 IBM Cloud 區域及資源群組。 如需支援的地區,請參閱在其他地區中建立 VPC。 叢集資源群組可能與 VPC 資源群組不同。 系統提示時,請輸入您的 IBM Cloud 認證。 如果您擁有聯邦式身分識別,請使用「--sso」選項進行登入。
    ibmcloud login -r <region> [-g <resource_group>] [--sso]
    
  2. 建立不含預設位址字首的標準存取 VPC。 在輸出中,複製 VPC ID。
    ibmcloud is vpc-create <name> --classic-access --address-prefix-management manual
    
  3. 對於計劃在其中建立子網路的每個區域,建立一個以上的位址字首。 位址字首必須在下列其中一個範圍內: 10.0.0.0 - 10.255.255.255172.17.0.0 - 172.17.255.255172.21.0.0 - 172.31.255.255192.168.0.0 - 192.168.254.255
    ibmcloud is vpc-address-prefix-create <prefix_name> <vpc_id> <zone> <prefix_range>
    
  4. 在每一個區域中建立使用您位址字首的子網路。 如需此指令中選項的相關資訊,請參閱 CLI 參考資料。 VPC 子網會為叢集中的工作節點和負載平衡服務提供 IP 位址,因此 請建立一個具備足夠 IP 位址的 VPC 子網,例如 256 個。 您無法在事後變更 VPC 子網所擁有的 IP 位址數量。
    ibmcloud is subnet-create <subnet_name> <vpc_id> --zone <vpc_zone> --ipv4-address-count <number_of_ip_address> --ipv4-cidr-block <prefix_range>
    
  5. 若要執行預設的 Red Hat OpenShift 元件 (例如 Web 主控台或 OperatorHub, ),並允許您的群集存取公共端點 (例如其他應用程式的公共 URL 或僅支援公共雲端服務端點的 IBM Cloud 服務),您必須在子網路附加公共閘道。
    1. 在每一個區域中建立公用閘道。 建議將公共閘道命名為「<cluster>-<zone>-gateway」此類格式。 記下輸出中的公用閘道 ID
        ibmcloud is public-gateway-create <gateway_name> <VPC_ID> <zone>
        ```
        輸出範例
        ```sh {: screen}
        ID               26466378-6065-4716-a90b-ac7ed7917c63
        Name             mycluster-us-south-1-gateway
        Floating IP      169.xx.xx.xxx(26466378-6065-4716-a90b-ac7ed7917c63)
        Status           pending
        Created          2019-09-20T16:27:32-05:00
        Zone             us-south-1
        VPC              myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
        Resource group   -
        ```
    2. 請使用公共閘道和子網的 ID,將公共閘道附加至該子網。
    ```sh {: pre}
        ibmcloud is subnet-update <subnet_ID> --public-gateway-id <gateway_ID>
        ```
        輸出範例
        ```sh {: screen}
        ID                  91e946b4-7094-46d0-9223-5c2dea2e5023
        Name                mysubnet1
        IPv4 CIDR           10.240.xx.xx/24
        Address available   250
        Address total       256
        ACL                 allow-all-network-acl-36c8f522-4f0d-400c-8226-299f0b8198cf(585bc142-5392-45d4-afdd-d9b59ef2d906)
        Gateway             mycluster-us-south-1-gateway(26466378-6065-4716-a90b-ac7ed7917c63)
        Created             2019-08-21T09:43:11-05:00
        Status              available
        Zone                us-south-1
        VPC                 myvpc(36c8f522-4f0d-400c-8226-299f0b8198cf)
        ```
    
  6. 使用子網路來 建立叢集。 在建立叢集期間或在區域中新增工作者節點時,請勿刪除您連接至叢集的子網路。 如果您刪除叢集使用的 VPC 子網路,則使用子網路中 IP 位址的任何負載平衡器可能會遇到問題,而且您可能無法建立新的負載平衡器。