嘗試修改 Google Kubernetes Engine (GKE) 叢集或其節點集區時,如果另有其他作業正在執行,系統可能會暫時禁止您執行操作。這個問題可能會延遲重要更新、叢集管理和應用程式部署作業。
本頁面說明如何找出正在執行的作業。瞭解進行中的作業有助於估算延遲時間,並判斷何時重試動作。
這項資訊對應用程式開發人員和平台管理員/營運人員來說都很重要。應用程式開發人員在部署或修改應用程式時,可能會遇到這些限制;平台管理員/營運人員則負責管理整體叢集生命週期和升級作業,並需要排解受阻的管理工作。如要進一步瞭解我們在內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。Google Cloud
瞭解並行作業錯誤
在 GKE 中,叢集作業是指修改叢集控制層或節點集區狀態的動作。這些作業由 GKE 管理,可由您或 GKE 啟動,以進行維護。常見的叢集作業包括:
- 正在建立或刪除叢集。
- 正在升級叢集的控制層版本。
- 建立、更新、調整大小或刪除節點集區。
- 修改叢集層級設定,例如啟用或停用功能。
- 由 GKE 啟動的自動控制層修復作業。
對叢集執行作業時,您可能會看到類似下列的錯誤訊息:
Cluster is running incompatible operation OPERATION_NAME
Cluster is currently being created, deleted, updated or repaired and cannot be updated
Operation OPERATION_NAME is currently ACTIONING cluster CLUSTER_NAME. Please wait and try again once it is done
這些錯誤可能包含下列值:
OPERATION_NAME:叢集上執行中作業的專屬 ID。使用這個名稱追蹤先前作業的狀態,該作業會阻礙新作業啟動。ACTIONING:對叢集執行的動作。例如:Creating或Updating。CLUSTER_NAME:作業的目標叢集名稱。
發生這些錯誤的原因是 GKE 限制了可同時執行的作業數量,以避免衝突。一般來說,GKE 只允許在叢集層級執行一項作業,或每個節點集區同時執行一項作業。GKE 也會執行自己的自動動作 (例如升級控制層),這些動作會計入這項限制,並可能暫時禁止您啟動新工作。
解決並行作業錯誤
如果收到錯誤訊息,指出有其他作業正在進行中,請找出進行中的工作並等待完成:
如果您不知道阻礙作業的名稱,請列出叢集所有進行中和待處理的作業:
gcloud container operations list \ --location=LOCATION \ --filter '(targetLink~/clusters/CLUSTER_NAME$ OR targetLink~/clusters/CLUSTER_NAME/) AND status!=DONE' \ --format json更改下列內容:
LOCATION:叢集的 Compute Engine 區域或可用區 (例如us-central1或us-central1-a),視叢集是區域性或可用區而定。CLUSTER_NAME:發生失敗作業的叢集名稱。輸出結果會與下列內容相似:
{ "name": "operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "operationType": "UPDATE_CLUSTER", "selfLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/operations/operation-0978307200000-00112233-4455-6677-8899-aabbccddeeff", "startTime": "2001-01-01T00:00:00.000000000Z", "status": "RUNNING", "targetLink": "https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME/nodePools/NODE_POOL_NAME", "zone": "LOCATION" }在輸出內容中,查看每項作業的
name欄位。這個值是作業名稱,會阻止新作業啟動。下一個步驟會用到這個值。如要進一步瞭解輸出內容中的其他欄位,請參閱
projects.locations.operations的 API 說明文件。
等待作業完成:
gcloud container operations wait OPERATION_NAME \ --location=LOCATION將
OPERATION_NAME替換為錯誤訊息或上一個步驟中的封鎖作業名稱。這個指令會主動監控作業,並在作業完成時結束。
封鎖作業的狀態為
DONE後,請重試導致錯誤的作業。
後續步驟
如果說明文件無法解決您的問題,請參閱「取得支援」一文,瞭解如何取得進一步協助,包括下列主題的建議:
- 與 Cloud Customer Care 聯絡,建立客服案件。
- 在 StackOverflow 上提問,並使用
google-kubernetes-engine標記搜尋類似問題,向社群尋求支援。你也可以加入#kubernetes-engineSlack 頻道,取得更多社群支援。 - 使用公開 Issue Tracker 提出問題或功能要求。