為何在建立叢集之後不存在 Ingress 子網域?
虛擬私有雲 經典基礎架構
您建立一個叢集,並執行 ibmcloud oc cluster get --cluster CLUSTER 來檢查其狀態。 叢集 State 為 normal,但 Ingress Subdomain 和 Ingress Secret 無法使用。
即使叢集已處於 normal 狀態,Ingress 子網域和密碼也可能仍在建立中。 Ingress 子網域與密鑰的建立可能需要超過 15 分鐘才能完成:
標準叢集:
- 工作者節點在 VLAN 上完全部署並準備就緒時,將訂購用於 VLAN 的可攜式公用子網路和可攜式專用子網路。
- 可攜式子網路訂購順利完成後,將使用可攜式公用 IP 位址和可攜式專用 IP 位址更新
ibm-cloud-provider-vlan-ip-configconfigmap。 - 當
ibm-cloud-provider-vlan-ip-config配置地圖更新時,會觸發 Ingress 控制器以建立對應的 Ingress。 - 會建立用於公開 Ingress 控制器的負載平衡器服務,並為其指派 IP 位址。
- 負載平衡器 IP 位址用於註冊 IBM NS1 中的 Ingress 子網域。 IBM NS1 在註冊過程中可能會出現延遲。
VPC 叢集:
- 當您建立 VPC 叢集時,系統會自動在您的 VPC 中、叢集外部建立一個公有 VPC 負載平衡器與一個私有 VPC 負載平衡器。
- 每個區域會觸發一個公用 Ingress 控制器以進行建立。
- 會建立用於公開 Ingress 控制器的負載平衡器服務,並為其指派主機名稱。
- 負載平衡器主機名稱用於註冊 IBM NS1 中的 Ingress 子網域。 IBM NS1 在註冊過程中可能會出現延遲。
在刪除具有相同或類似名稱的叢集之後建立叢集? 請改為參閱 在您建立相同或類似名稱的叢集之後,沒有 Ingress 子網域存在。
通常,叢集準備就緒後,將在 15 分鐘後建立 Ingress 子網域和密碼。 如果叢集處於 normal 狀態超過 15 分鐘後,而 Ingress 子網域和密碼仍然無法使用,可以遵循下列步驟來檢查建立程序的進度:
-
登入叢集。 因為子網域無法使用,Red Hat OpenShift 主控台無法開啟。 相反地,您可以透過 CLI 使用
--admin選項來設定叢集環境定義。ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID --admin -
驗證工作者節點的 State 是否為
normal,以及 Status 是否為Ready。 建立叢集後,工作者節點可能最長需要 20 分鐘才能準備就緒。ibmcloud oc worker ls -c CLUSTER_NAME_OR_ID輸出範例
ID Public IP Private IP Flavor State Status Zone Version kube-blrs3b1d0p0p2f7haq0g-mycluster-default-000001f7 169.xx.xxx.xxx 10.xxx.xx.xxx u3c.2x4.encrypted deployed Ready dal10 1.35 -
驗證已完成建立 Ingress 控制器的必要步驟。
- 經典叢集:查看「
ibm-cloud-provider-vlan-ip-config」配置地圖的詳細資訊。
oc describe cm ibm-cloud-provider-vlan-ip-config -n kube-system- 如果該 configmap 顯示 IP 位址,請繼續執行下一步。
- 如果 Events 區段顯示類似於
ErrorSubnetLimitReached: There are already the maximum number of subnets permitted in this VLAN的警告訊息,請參閱 VLAN 容量疑難排解主題。
移入有 IP 位址的 configmap 的輸出範例:
NAME: ibm-cloud-provider-vlan-ip-config Namespace: kube-system Labels: <none> Annotations: <none> Data ==== reserved_public_vlan_id: ---- vlanipmap.json: ---- { "vlans": [ { "id": "2234947", "subnets": [ { "id": "2215454", "ips": [ "10.XXX.XXX.XXX", "10.XXX.XXX.XXX", "10.XXX.XXX.XXX", "10.XXX.XXX.XXX", "10.XXX.XXX.XXX" ], "is_public": false, "is_byoip": false, "cidr": "10.XXX.XXX.X/29" } ], "zone": "dal10", "region": "us-south" }, { "id": "2234945", "subnets": [ { "id": "2219170", "ips": [ "169.XX.XXX.XX", "169.XX.XXX.XX", "169.XX.XXX.XX", "169.XX.XXX.XX", "169.XX.XXX.XX" ], "is_public": true, "is_byoip": false, "cidr": "169.XX.XXX.X/29" } ], "zone": "dal10", "region": "us-south" } ], "vlan_errors": [], "reserved_ips": [] } cluster_id: ---- bmnj1b1d09lpvv3oof0g reserved_private_ip: ---- reserved_private_vlan_id: ---- reserved_public_ip: ---- Events: <none>- VPC 叢集: 驗證 Ingress 控制器的 VPC 負載平衡器是否存在。 在輸出結果中,請尋找名稱以
kube-<cluster_ID>開頭的 VPC 負載平衡器。 如果您未安裝infrastructure-service外掛程式,請執行ibmcloud plugin install infrastructure-service來安裝它。
ibmcloud is load-balancers即使 VPC 負載平衡器已列出,其 DNS 記錄可能仍在註冊中。 建立 VPC 負載平衡器時,主機名稱會透過公用 DNS 登錄。 有時,此 DNS 記錄可能需要幾分鐘時間,才會同步到您的客戶所使用的特定 DNS 伺服器上。
- 經典叢集:查看「
-
驗證已順利建立 Ingress 控制器。
- 檢查叢集是否存在 Ingress 控制器部署。
- 如果列出 Ingress 控制器部署,請繼續進行下一步。
- 如果在幾分鐘之後未建立任何 Ingress 控制器部署,請 檢閱取得說明的方法。
oc get deployment -n openshift-ingress ``` 輸出範例 ```sh {: screen} NAME READY UP-TO-DATE AVAILABLE AGE router-default 2/2 2 2 26m ``` 2. 請檢查 Ingress 控制器的負載平衡器服務是否存在,並獲指派公用外部 IP 位址 (標準叢集) 或主機名稱 (VPC 叢集)。 * 如果列出名為 `router-default` 的服務,並獲指派 IP 位址 (標準叢集) 或主機名稱 (VPC 叢集),請繼續進行下一步。 * 如果在幾分鐘之後未建立 `router-default` 服務,請 [檢閱取得協助的方式](/docs/openshift?topic=openshift-get-help)。 ```sh {: pre} oc get svc -n openshift-ingress ``` 輸出範例 ```sh {: screen} NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE router-default LoadBalancer 172.21.47.119 169.XX.XX.XX 80:31182/TCP,443:31154/TCP 27m router-internal-default ClusterIP 172.21.51.30 <none> 80/TCP,443/TCP,1936/TCP 26m ``` - 檢查叢集是否存在 Ingress 控制器部署。
-
再次檢查 Ingress 子網域和密碼是否已建立。 如果它們無法使用,但您已驗證步驟 1-3 中的所有元件都存在,請 檢閱取得協助的方法。
ibmcloud oc cluster get -c CLUSTER_NAME_OR_ID