嘗試修改 Google Kubernetes Engine (GKE) 叢集或節點集區時,系統可能會暫時封鎖您的動作,因為有其他作業正在執行。這個問題可能會導致重大更新、叢集管理和應用程式部署作業延遲。
請參閱本頁面,瞭解如何找出正在執行的作業。瞭解進行中的作業有助於預估延遲時間,並判斷何時重試動作。
這項資訊對應用程式開發人員和平台管理員/營運人員都很重要。應用程式開發人員在部署或修改應用程式時,可能會遇到這些限制;平台管理員/營運人員則負責管理整體叢集生命週期和升級作業,並需要排解受阻的管理工作。如要進一步瞭解我們在Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE 使用者角色和工作」。
瞭解並行作業錯誤
在 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 客戶服務聯絡,建立支援案件。
- 在 StackOverflow 上提問,並使用
google-kubernetes-engine
標記搜尋類似問題,向社群尋求支援。你也可以加入#kubernetes-engine
Slack 頻道,取得更多社群支援。 - 使用公開問題追蹤工具回報錯誤或提出功能要求。