為何無法建立或刪除叢集或工作者節點?
排除建立或刪除叢集時遇到的問題。
您無法在叢集上執行與基礎架構相關的指令,例如:
- 在現有叢集或建立新叢集時新增工作者節點。
- 正在移除工作者節點。
- 重新載入或重新啟動工作節點。
- 正在調整工作者節點儲存區的大小。
- 正在更新叢集。
- 正在刪除叢集。
請檢閱下列各節中的錯誤訊息,以疑難排解 不正確的叢集許可權、其他基礎架構帳戶中的孤立叢集 或 帳戶上基於時間的一次性密碼(TOTP) 所導致的基礎架構相關問題。
由於許可權和認證錯誤,無法建立或刪除叢集或工作者節點
您無法管理叢集的工作線程節點,並且您會收到一條提及 permissions、credentials、SoftLayer、API keys 或 role 的錯誤訊息。
查看有關 權限和憑證錯誤的 資訊並按照相關步驟操作。
由於帳戶錯誤,無法建立或刪除工作者節點
經典基礎架構
您無法管理群集的工作人員節點,也無法在經典 IBM Cloud 基礎架構帳戶中檢視群集工作人員節點。 不過,您可以更新及管理帳戶中的其他叢集。
甚至,您已驗證具有適當的基礎架構認證。
您可能會在工作者節點狀態中收到類似下列範例的錯誤訊息。
incorrect account for worker - The 'classic' infrastructure user credentials changed and no longer match the worker node instance infrastructure account.
該叢集可能是部署在一個已不再與您的 IBM Cloud Kubernetes Service 帳戶連結的傳統 IBM Cloud 基礎架構帳戶中。 叢集是孤立的。 由於這些資源位於不同的帳戶中,您沒有修改這些資源所需的基础架構憑證。
請參考以下範例情境,以了解叢集可能如何成為孤兒叢集。
- 您具有 IBM Cloud「隨收隨付制」帳戶。
- 您建立名為
Cluster1的叢集。 工作者節點及其他基礎架構資源佈建至「隨收隨付制」帳戶隨附的基礎架構帳戶。 - 後來,您發現您的團隊使用的是舊版或共用經典版 IBM Cloud 基礎架構帳戶。 您使用
ibmcloud ks credential set指令以將 IBM Cloud 基礎架構認證變更為使用您的團隊帳戶。 - 您建立另一個名為
Cluster2的叢集。 工作者節點及其他基礎架構資源佈建至團隊基礎架構帳戶。 - 您注意到
Cluster1需要工作者節點更新、工作者節點重新載入,或您只想要藉由刪除它來予以清除。 然而,由於Cluster1是部署在另一個基礎架構帳戶中的,因此您無法修改其基礎架構資源。Cluster1已成為孤立資源。 - 請依照下一節中的解決步驟操作,但請勿將基礎架構憑證重新設定回您的團隊帳戶。 您可以刪除
Cluster1,但現在Cluster2是孤立的。 - 您將基礎架構認證變更回建立
Cluster2的團隊帳戶。 現在,您不再具有孤立叢集!
請遵循下列步驟來檢閱基礎架構認證,並判斷您看到認證錯誤的原因。
-
登入 主控台。
-
檢查您叢集所在的地區目前使用哪個基礎架構帳戶來佈建叢集。 將
REGION取代為叢集所在的 IBM Cloud 地區。ibmcloud ks credential get --region REGION如果您看到類似下列的訊息,則帳戶會使用預設的鏈結基礎架構帳戶。
No credentials set for resource group <resource group>.: The user credentials could not be found. -
檢查已使用哪個基礎架構帳戶來佈建叢集。
- 在工作者節點標籤中,選取工作者節點,並記下其 ID。
- 開啟
,然後按一下基礎結構 > 經典基礎結構。
- 在「基礎架構」導覽窗格中,按一下 「裝置」>「裝置清單」。
- 搜尋您先前記下的工作者節點 ID。
- 若您找不到工作節點 ID,表示該工作節點尚未配置至此基礎架構帳戶中。 請切換至不同的基礎架構帳戶,然後再試一次。
-
比較基礎架構帳戶。
-
如果工作者節點位於鏈結的基礎架構帳戶中: 使用
ibmcloud ks credential unset指令,以回復使用與「隨收隨付制」帳戶鏈結的預設基礎架構認證。 -
如果工作者節點位於不同的基礎架構帳戶中: 請使用
ibmcloud ks credential set指令,將您的基礎架構認證變更為在其中佈建叢集工作者節點的帳戶 (在前一個步驟中找到)。如果您已無法存取基礎結構憑證,您可以開啟 IBM Cloud 支援個案,以確定其他基礎結構帳戶管理員的電子郵件地址。 但是,IBM Cloud 支援無法為您移除遺棄的群集,您必須聯絡其他帳戶的管理員,才能取得基礎架構憑證。
-
如果基礎架構帳戶符合: 檢查叢集裡的其餘工作者節點,並查看是否有任何工作者節點指派給不同的基礎架構帳戶。 請確定您已檢查叢集裡具有認證問題的工作者節點。 檢閱其他 一般基礎架構認證問題。
-
-
現在已更新基礎架構認證,請重試封鎖的動作 (例如更新或刪除工作者節點),並驗證動作是否成功。
-
如果相同地區及資源中有其他叢集需要先前的基礎架構認證,請重複步驟 3,將基礎架構認證重設為先前的帳戶。 請注意,如果您建立叢集所用的基礎架構帳戶與您切換至的帳戶不同,則可能會孤立那些叢集。
每次需要執行叢集或工作者動作時都厭倦了切換基礎架構帳戶? 請考量在相同基礎架構帳戶中重建地區及資源群組中的所有叢集。 然後,移轉工作負載,並從不同的基礎架構帳戶中移除舊叢集。
由於端點錯誤,無法建立或刪除工作者節點
您無法管理叢集的工作者節點,且收到類似於下列其中一項的錯誤訊息。
Worker deploy failed due to network communications failing to master or registry endpoints. Please verify your network setup is allowing traffic from this subnet then attempt a worker replace on this worker
Pending endpoint gateway creation
工作節點可透過群集的虛擬專用端點 (VPE) 與 Kubernetes master 進行通訊。
在 VPC 中為每個叢集建立一個 VPE 閘道資源。 如果在 VPC 中未正確建立叢集的 VPE 閘道,則會從 VPC 中刪除 VPE 閘道,或從 VPC 子網路中刪除保留給 VPE 的 IP 位址,則工作者節點會失去與 Kubernetes 主節點的連線功能。
重新建立工作節點與 Kubernetes master 之間的 VPE 連線。
-
若要在 VPC 基礎架構主控台中檢查叢集的 VPE 閘道,請開啟 VPC 儀表板的虛擬專用端點閘道,並尋找格式為
iks-<cluster_ID>的 VPE 閘道。- 如果未列出叢集的閘道,請繼續進行下一步。
- 如果列出叢集的閘道,但其狀態不是
Stable,請 開立支援案例。 在案例詳細資料中,包括叢集 ID。 - 如果列出叢集的閘道且其狀態為
Stable,則您可能有防火牆或安全群組規則會封鎖工作者節點與叢集主節點的通訊。 配置安全群組規則,以容許將送出資料流量傳送至適當的埠及 IP 位址。
-
重新整理叢集主節點。 如果 VPE 閘道不存在於 VPC 中,則會建立 VPE 閘道,並重新建立與工作者節點所連接子網路上保留 IP 位址的連線功能。 重新整理叢集之後,請等待幾分鐘,讓作業完成。
ibmcloud ks cluster master refresh -c <cluster_name_or_ID> -
透過開啟 VPC 儀表板的虛擬專用端點閘道 並尋找格式為
iks-<cluster_ID>的 VPE 閘道,驗證已建立叢集的 VPE 閘道。 -
如果在重新整理叢集主節點之後仍然無法管理工作者節點,請取代您無法存取的工作者節點。
- 列出叢集裡的所有工作者節點,並記下要取代的工作者節點的 name。
kubectl get nodes ``` 這個指令傳回的**名稱**是指派給工作者節點的專用 IP 位址。 您可以在執行 ` `ibmcloud ks worker ls --cluster <cluster_name_or_ID>` ` 指令時,尋找具有**相同私有 IP** 位址的工作節點,以取得更多關於該工作節點的資訊。 2. 取代工作者節點。 在取代處理程序中,會將在工作者節點上執行的 Pod 排除並重新排程至叢集裡的其餘工作者節點。 工作者節點也會被隔離,或標示為無法用於未來 Pod 排程。 請使用由 ` `ibmcloud ks worker ls --cluster <cluster_name_or_ID>` ` 指令所回傳的工作節點 ID。 ```sh {: pre} ibmcloud ks worker replace --cluster <cluster_name_or_ID> --worker <worker_node_ID> ``` 3. 驗證已取代工作者節點。 ```sh {: pre} ibmcloud ks worker ls --cluster <cluster_name_or_ID> ```
由於付費帳戶或一次性密碼錯誤,無法建立或刪除工作者節點
經典基礎架構
您無法管理叢集的工作者節點,並且收到類似於下列其中一個範例的錯誤訊息。
Unable to connect to the IBM Cloud account. Ensure that you have a paid account.
can't authenticate the infrastructure user: Time-based One Time Password authentication is required to log in with this user.
您的 IBM Cloud 帳戶透過隨收隨付制帳戶使用自己的自動鏈結基礎架構。
但是,帳戶管理者已啟用以時間為基礎的一次性密碼 (TOTP) 選項,以便在使用者登入時提示使用者輸入以時間為基礎的一次性密碼 (TOTP)。 此類型的多因子鑑別 (MFA) 是以帳戶為基礎,會影響對帳戶的所有存取權。 TOTP MFA 還會影響 IBM Cloud Kubernetes Service 對 IBM Cloud 基礎架構進行呼叫所需的存取權。 若該帳戶已啟用 TOTP,您將無法在 IBM Cloud Kubernetes Service 中建立及管理叢集和工作節點。
IBM Cloud 帳戶擁有者或帳戶管理員必須採取下列其中一項行動。
- 對帳戶停用 TOTP,然後繼續使用 IBM Cloud Kubernetes Service 的自動鏈結的基礎架構認證。
- 繼續使用 TOTP,但建立 IBM Cloud Kubernetes Service 對 IBM Cloud 基礎架構 API 進行直接呼叫時可以使用的基礎架構 API 金鑰。
停用帳戶的 TOTP MFA
- 登入 IBM Cloud 主控台。 從選單列中,選擇 「管理」>「存取權限 (IAM)」。
- 按一下 設定 頁面。
- 在多因子鑑別下,按一下編輯。
- 選取無,然後按一下更新。
使用 TOTP MFA 為 IBM Cloud Kubernetes Service 建立基礎架構 API 金鑰
-
在 IBM Cloud 主控台中,選擇「管理」>「存取權限 (IAM)」>「使用者」,然後點選帳戶擁有者的名稱。 注意:如果不使用帳戶所有者的憑證,請 確保使用其憑證的身份在 IBM Cloud Kubernetes Service 中具有管理員平台角色,如果使用服務 ID,則在 IAM Identity Service 中具有操作員平台角色。
-
在 API 金鑰區段中,尋找或建立標準基礎架構 API 金鑰。
-
使用基礎架構 API 金鑰來設定 IBM Cloud Kubernetes Service 的基礎架構 API 認證。 對建立叢集的每個地區重複此指令。
ibmcloud ks credential set classic --infrastructure-username <infrastructure_API_username> --infrastructure-api-key <infrastructure_API_authentication_key> --region <region> -
驗證已設定正確的認證。
ibmcloud ks credential get --region <region>輸出範例
Infrastructure credentials for user name user@email.com set for resource group default. -
為確保現有叢集使用更新後的基础架構 API 憑證,請在您擁有叢集的每個區域中執行
ibmcloud ks api-key reset --region <region>。