標準叢集: 為何無法部署負載平衡器?

在叢集中部署或更新網路負載平衡器 (NLB) 服務時,請排除相關問題。

經典基礎架構

當您在經典群集中描述 ibm-cloud-provider-vlan-ip-config ConfigMap 時,可能會看到類似以下範例輸出的錯誤訊息。

oc describe cm ibm-cloud-provider-vlan-ip-config -n kube-system
Warning  CreatingLoadBalancerFailed ... ErrorSubnetLimitReached: There are already the maximum number of subnets permitted in this VLAN.

在標準叢集裡,第一次在區域中建立叢集時,會在您的 IBM Cloud 基礎架構帳戶中,自動為您在該區域中佈建公用 VLAN 及專用 VLAN。

在該區域中,會在您指定的公用 VLAN 上要求 1 個公用可攜式子網路,並在您指定的專用 VLAN 上要求 1 個專用可攜式子網路。 對於 Red Hat OpenShift on IBM Cloud,VLAN 的限制為 40 個子網路。 如果區域中叢集的 VLAN 已達到該限制,則可能沒有可攜式公用 IP 位址可用來建立網路負載平衡器 (NLB)。

若要檢視 VLAN 有多少子網路,請執行下列動作:

  1. IBM Cloud 基礎架構控制台中,選擇「網路」>「IP 管理」>「VLAN」。
  2. 按一下您用來建立叢集之 VLAN 的 VLAN 號碼。 檢閱 Subnets 區段,以查看是否有 40 個以上的子網路。

如果您需要新的 VLAN,請與 IBM Cloud 支援中心聯絡,進行訂購。

然後,建立叢集,而叢集使用這個新的 VLAN。

如果您有另一個可用的 VLAN,可以在現有叢集裡設定 VLAN Spanning。 之後,您便可以將新的工作者節點新增至使用具有可用子網路之另一個 VLAN 的叢集。 若要檢查 VLAN 跨域功能是否已啟用,請使用 ibmcloud oc vlan spanning get --region REGION 指令

如果並未使用 VLAN 中的所有子網路,則可以透過將 VLAN 上的子網路新增到叢集來重複使用這些子網路。

  1. 檢查要使用的子網路是否可用。

    使用的基礎架構帳戶可能在多個 IBM Cloud 帳戶之間共用。 在這種情況下,即使您執行 ibmcloud oc subnets 指令來查看具有 「已綁定叢集 」的子網,也只能看到您自己叢集的相關資訊。 請洽詢基礎架構帳戶擁有者,以確定子網路可供使用,且其他任何帳戶或團隊不在使用中。

  2. 請使用 ibmcloud oc cluster subnet add 指令,將現有的子網開放給您的叢集使用。

  3. 驗證已順利建立子網路並將其新增至叢集。 子網路 CIDR 列出在 Subnet VLANs 區段中。

    ibmcloud oc cluster get --cluster CLUSTER_NAME --show-resources
    

    在此輸出範例中,第二個子網路已新增至 2234945 公用 VLAN:

    Subnet VLANs
    VLAN ID   Subnet CIDR          Public   User-managed
    2234947   10.xxx.xx.xxx/29     false    false
    2234945   169.xx.xxx.xxx/29    true     false
    2234945   169.xx.xxx.xxx/29    true     false
    
  4. 請確認您所新增子網中的可攜式 IP 位址,是否已用於負載平衡器的 EXTERNAL-IP。 各項服務可能需要幾分鐘時間,才能開始使用新子網中的可攜式 IP 位址。

    oc get svc -n kube-system