我刪除了一個可攜式子網,現在我的 Classic 叢集中的負載平衡器出現故障。 如何回復?
經典
在叢集網路中恢復子網時,請排除相關問題。
您的群集出現網路錯誤。
已刪除可攜式子網路。
完成下列步驟。
-
對於遇到問題的叢集,請執行下列指令並記下叢集 ID。
ibmcloud oc cluster ls -
列出叢集正在使用的子網路。 在輸出中,記下叢集正在使用的子網路。
ibmcloud oc subnets --provider PROVIDER | grep CLUSTER-ID -
列出您帳戶中的子網。 檢查帳戶中的子網路清單是否遺漏您在步驟 1 中找到的任何子網路。 這表示您的叢集正在使用已刪除的子網路,這會導致「負載平衡器」失敗。
ibmcloud sl subnet listibmcloud sl subnet detail SUBNET-ID -
針對已刪除的每一個子網路,重建它。 如果您的 ALB 或LoadBalancers,請指定工作節點的公用 VLAN ID;對於私有 IP,指定工作節點的私有 VLAN ID。
ibmcloud oc cluster subnet create -c CLUSTER --size 8 --vlan VLAN-ID -
在已刪除的可攜式子網路中尋找任何使用 IP 位址的 LoadBalancers,儲存它們,然後刪除它們。 請勿刪除
openshift-ingress名稱空間中的 LoadBalancers,因為稍後在這些步驟中會刪除那些。- 尋找 LoadBalancer 詳細資料,並記下它們使用的 IP 位址。
kubectl get svc -A -o wide | grep LoadBalancer ``` 1. 對於每一個不在使用可攜式 IP 位址之 `openshift-ingress` 名稱空間中的 LoadBalancer,請將設定儲存至 YAML 檔案。 ```sh {: pre} kubectl get svc -o yaml -n LB-NAMESPACE LB-NAME > LB-NAMESPACE.LB-NAME.yaml- 刪除 LoadBalancer。
```sh {: pre} kubectl delete svc -n LB-NAMESPACE LB-NAME ``` -
快速完成下列步驟,因為必須在
openshift-ingress-operatorPod 重新啟動並重建 LoadBalancers之前分離可攜式子網路。- 縮減 Ingress 運算子。
kubectl scale deploy -n openshift-ingress-operator ingress-operator --replicas 0 ``` 1. 刪除 `openshift-ingress` 名稱空間中的 LoadBalancers。 ```sh {: pre} kubectl delete svc -n openshift-ingress LB-NAME ``` 1. 從叢集分離可攜式子網路。 ```sh {: pre} ibmcloud oc cluster subnet detach -c CLUSTER-ID --subnet-id SUBNET-ID ``` -
等待幾分鐘,讓 detach 指令完成,然後檢閱儲存子網路及 IP 位址的
ibm-cloud-provider-vlan-ip-configConfigMap,以檢查它們是否已分離。kubectl get cm -n kube-system ibm-cloud-provider-vlan-ip-config -o yaml分離過程可能需要 5 至 10 分鐘才能完成。 在等待期間,您可以確保為此叢集建立的新可攜式子網路也出現在 ConfigMap 中。
-
檢查是否已重建
openshift-ingress名稱空間中的 LoadBalancers,如果是,請檢查使用的 IP 位址是否來自新的子網路。 如果它們來自舊子網路,請使用kubectl delete svc -n openshift-ingress LOADBALANCER_NAME指令再次刪除它們。 -
在使用來自新子網路的 IP 位址重建
openshift-ingressLoadBalancers 之後,請將新的 IP 位址新增至 DNS 記錄。- 列出 DNS 項目。
ibmcloud oc nlb-dns ls -c CLUSTER-ID ``` 1. 在輸出中,尋找 `openshift-ingress` 項目,並使用下列指令將新的 IP 位址新增至這些項目。 ```sh {: pre} ibmcloud ks nlb-dns add -c CLUSTER-ID --ip NEW-LOADBALANCE-IP --nlb-host INGRESS-DOMAIN-NAME ``` 1. 移除舊 IP。 ```sh {: pre} ibmcloud oc nlb-dns rm classic -c CLUSTER-ID --ip OLD-LOADBALANCER-IP --nlb-host INGRESS-DOMAIN-NAME ``` -
請使用您先前儲存的 YAML 檔案,重新建立任何不在
openshift-ingress命名空間中、且您已在步驟 3 中刪除的LoadBalancers。kubectl apply -f LB-NAMESPACE.LB-NAME.yaml