協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
對 EKS 功能進行故障診斷
注意
EKS 功能是完全受管的,並在叢集外部執行。您無法直接存取控制器命名空間。故障診斷著重於功能運作狀態、資源狀態、組態和控制器日誌。您可以設定控制器日誌交付,以取得控制器行為的可見性。請參閱 存取 EKS 功能控制器日誌。
一般疑難排解方法
疑難排解 EKS 功能時,請遵循下列一般方法:
-
檢查功能運作狀態:使用
aws eks describe-capability來檢視功能狀態和運作狀態問題 -
驗證資源狀態:檢查您為狀態條件和事件建立的 Kubernetes 資源 CRDs)
-
檢閱控制器日誌:如果已設定日誌交付,請查詢控制器日誌以取得錯誤和調校詳細資訊
-
檢閱 IAM 許可:確保能力角色具有必要的許可
-
檢查組態:驗證功能特定的組態是否正確
使用控制器日誌進行故障診斷
如果您已設定控制器日誌交付 (請參閱存取 EKS 功能控制器日誌),您可以查詢日誌以識別對帳錯誤、資源衝突和組態問題。
所有控制器的查詢錯誤
fields @timestamp, controller, message, error | filter level = "error" | sort @timestamp desc | limit 50
篩選特定 ACK 服務控制器的日誌
使用 controllerGroup 欄位隔離日誌與特定 ACK 服務控制器:
fields @timestamp, message, error | filter controllerGroup = "s3.services.k8s.aws" | filter level = "error" | sort @timestamp desc
若要依資源類型進一步篩選 (例如,僅限來自 EC2 控制器的SecurityGroup日誌):
fields @timestamp, message, error | filter controllerGroup = "ec2.services.k8s.aws" | filter controllerKind = "SecurityGroup" | sort @timestamp desc | limit 100
篩選特定 Argo CD 應用程式的日誌
使用 application 欄位隔離特定 Argo CD 應用程式的日誌:
fields @timestamp, message, error | filter application = "my-application" | sort @timestamp desc | limit 100
追蹤特定資源的對帳
使用 reconcileID 欄位遵循單一調校週期:
fields @timestamp, level, message, error | filter reconcileID = "your-reconcile-id" | sort @timestamp asc
指出問題的常見日誌模式
-
重複的對帳錯誤 — 控制器無法達到資源所需的狀態。檢查
error欄位以取得詳細資訊,例如 IAM 許可失敗或資源組態無效。 -
「協調程式錯誤」與 AWS API 錯誤 — 功能角色可能缺少特定 AWS 服務操作的許可。檢閱錯誤訊息並相應地更新 IAM 政策。
-
資源沒有日誌項目 - 如果您沒有看到預期控制器進行協調之資源的日誌,請確認該功能為 ,
ACTIVE且該資源存在於該功能可存取的命名空間中。
檢查功能運作狀態
所有 EKS 功能都透過 EKS 主控台和 describe-capability API 提供運作狀態資訊。
主控台:
-
在以下網址開啟 Amazon EKS 主控台:https://console.aws.amazon.com/eks/home#/clusters。
-
選取您的叢集名稱。
-
選擇可觀測性索引標籤。
-
選擇監控叢集。
-
選擇功能索引標籤以檢視所有功能的運作狀態和狀態。
功能索引標籤會顯示:
-
功能名稱和類型
-
目前狀態
-
運作狀態問題,含說明
AWS CLI:
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-capability-name
回應包括:
-
狀態:目前功能狀態 (
CREATING、ACTIVE、UPDATING、DELETING、CREATE_FAILED)UPDATE_FAILED -
運作狀態:運作狀態資訊,包括 功能偵測到的任何問題
常見功能狀態
CREATING:正在設定功能。
ACTIVE:功能正在執行並準備好使用。如果資源未如預期般運作,請檢查資源狀態和 IAM 許可。
正在更新:正在套用組態變更。等待狀態傳回 ACTIVE。
CREATE_FAILED 或 UPDATE_FAILED:設定或更新發生錯誤。如需詳細資訊,請參閱運作狀態區段。常見原因:
-
IAM 角色信任政策不正確或遺失
-
IAM 角色不存在或無法存取
-
叢集存取問題
-
無效的組態參數
驗證 Kubernetes 資源狀態
EKS 功能會在叢集中建立和管理 Kubernetes 自訂資源定義 (CRDs)。疑難排解時,請檢查您建立的資源狀態:
# List resources of a specific type kubectl getresource-kind-A # Describe a specific resource to see conditions and events kubectl describeresource-kindresource-name-nnamespace# View resource status conditions kubectl getresource-kindresource-name-nnamespace-o jsonpath='{.status.conditions}' # View events related to the resource kubectl get events --field-selector involvedObject.name=resource-name-nnamespace
資源狀態條件提供下列相關資訊:
-
資源是否已就緒
-
遇到的任何錯誤
-
目前對帳狀態
檢閱 IAM 許可和叢集存取
許多功能問題來自 IAM 許可問題或缺少叢集存取組態。驗證功能角色許可和叢集存取項目。
檢查 IAM 角色許可
驗證能力角色具有必要的許可:
# List attached managed policies aws iam list-attached-role-policies --role-namemy-capability-role# List inline policies aws iam list-role-policies --role-namemy-capability-role# Get specific policy details aws iam get-role-policy --role-namemy-capability-role--policy-namepolicy-name# View the role's trust policy aws iam get-role --role-namemy-capability-role--query 'Role.AssumeRolePolicyDocument'
信任政策必須允許capabilities.eks.amazonaws.com服務主體:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "capabilities.eks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
檢查 EKS 存取項目和存取政策
所有功能都需要其操作所在叢集上適當的 EKS 存取項目和存取政策。
驗證存取項目是否存在:
aws eks list-access-entries \ --cluster-namemy-cluster\ --regionregion-code
在清單中尋找功能角色 ARN。如果遺失,則 功能無法存取叢集。
檢查連接到項目的存取政策:
aws eks list-associated-access-policies \ --cluster-namemy-cluster\ --principal-arnarn:aws:iam::111122223333:role/my-capability-role\ --regionregion-code
所有功能都需要適當的存取政策:
-
ACK:需要建立和管理 Kubernetes 資源的許可
-
kro:需要建立和管理 Kubernetes 資源的許可
-
Argo CD:需要建立和管理應用程式的許可,並且需要遠端目標叢集上的存取項目以進行多叢集部署
針對 Argo CD 多叢集部署:
如果部署到遠端叢集,請確認功能角色在每個目標叢集上有存取項目:
# Check Access Entry on target cluster aws eks describe-access-entry \ --cluster-nametarget-cluster\ --principal-arnarn:aws:iam::111122223333:role/argocd-capability-role\ --regionregion-code
如果目標叢集上缺少存取項目,Argo CD 就無法將應用程式部署到其中。如需組態詳細資訊註冊目標叢集,請參閱 。
功能特定的疑難排解
如需每個功能類型特有的詳細故障診斷指引:
-
對 ACK 功能的問題進行故障診斷 - 疑難排解 ACK 資源建立、IAM 許可和跨帳戶存取
-
對 Argo CD 功能的問題進行故障診斷 - 疑難排解應用程式同步、儲存庫身分驗證和多叢集部署
-
對 kro 功能的問題進行故障診斷 - 疑難排解 ResourceGraphDefinitions、CEL 表達式和 RBAC 許可
所有功能的常見問題
功能卡在 CREATING 狀態
如果功能保持 CREATING 狀態的時間超過預期:
-
在主控台 (可觀測性 > 監控叢集 > 功能索引標籤) 或使用 CLI AWS 檢查功能運作狀態是否有特定問題:
aws eks describe-capability \ --regionregion-code\ --cluster-namemy-cluster\ --capability-namemy-capability-name\ --query 'capability.health' -
驗證 IAM 角色是否存在,並具有正確的信任政策
-
確保您的叢集可存取且運作狀態良好
-
檢查是否有任何叢集層級的問題,這些問題可能會阻礙功能設定
未建立或更新的資源
如果功能是 ,ACTIVE但資源未建立或更新:
-
檢查資源狀態是否有錯誤情況
-
驗證特定 AWS 服務 (ACK) 或儲存庫 (Argo CD) 的 IAM 許可
-
檢查建立基礎資源的 RBAC 許可 (kro)
-
檢閱驗證錯誤的資源規格
功能運作狀態顯示問題
如果 describe-capability 顯示運作狀態問題:
-
仔細閱讀問題描述 - 它們通常指出特定問題
-
解決根本原因 (IAM 許可、組態錯誤等)
-
問題解決後,此功能會自動復原
後續步驟
-
使用 功能資源 - 管理功能資源
-
對 ACK 功能的問題進行故障診斷 - ACK 特定的疑難排解
-
對 Argo CD 功能的問題進行故障診斷 - Argo CD 特定疑難排解
-
對 kro 功能的問題進行故障診斷 - kro 特定疑難排解
-
EKS 功能的安全考量 - 功能的安全最佳實務