AWS Outposts 上 Amazon EKS 本機叢集疑難排解 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

AWS Outposts 上 Amazon EKS 本機叢集疑難排解

本主題涵蓋一些使用本機叢集時可能遇到的常見錯誤與排除這些錯誤的方法。雖然本機叢集與雲端中的 Amazon EKS 叢集相似,但 Amazon EKS 管理本機叢集的方式仍有些許差異。

本機叢集透過 Amazon EKS API 建立,但會以非同步方式執行。這表示本機叢集對 Amazon EKS API 的請求會立即傳回。但是,這些請求可能會成功、因輸入驗證錯誤而快速檢錯,或失敗並附上描述性驗證錯誤。此行為與 Kubernetes API 相似。

本機叢集不會變為 FAILED 狀態。Amazon EKS 會嘗試以連續的方式使叢集狀態與使用者請求的所需狀態一致。因此,本機叢集可能會長期保持在 CREATING 狀態,直到基礎問題解決為止。

本機叢集問題可使用 describe-cluster Amazon EKS AWS CLI 命令發現。本機叢集問題可透過 describe-cluster 命令回應的 cluster.health 欄位顯露。此欄位內含的訊息包括錯誤代碼、描述性訊息和相關資源 ID。此資訊僅可透過 Amazon EKS API 和 AWS CLI 提供。在以下範例中,使用您本機叢集的名稱取代 my-cluster

aws eks describe-cluster --name my-cluster --query 'cluster.health'

範例輸出如下。

{ "issues": [ { "code": "ConfigurationConflict", "message": "The instance type 'm5.large' is not supported in Outpost 'my-outpost-arn'.", "resourceIds": [ "my-cluster-arn" ] } ] }

如果問題無法解決,您可能需要刪除本機叢集並建立新叢集。例如,嘗試使用在 Outpost 上未提供的執行個體類型佈建叢集。下表包含與運作狀態相關的常見錯誤。

錯誤情況 代碼 訊息 ResourceIds

找不到提供的子網路。

ResourceNotFound

The subnet ID subnet-id does not exist

所有提供的子網路 ID

提供的子網路不屬於同一 VPC。

ConfigurationConflict

Subnets specified must belong to the same VPC

所有提供的子網路 ID

某些提供的子網路不屬於指定的 Outpost。

ConfigurationConflict

Subnet subnet-id expected to be in outpost-arn, but is in other-outpost-arn

有問題的子網路 ID

某些提供的子網路不屬於任何 Outpost。

ConfigurationConflict

Subnet subnet-id is not part of any Outpost

有問題的子網路 ID

某些提供的子網路沒有足夠的可用地址為控制平面執行個體建立彈性網路介面。

ResourceLimitExceeded

The specified subnet does not have enough free addresses to satisfy the request.

有問題的子網路 ID

您的 Outpost 不支援指定的控制平面執行個體類型。

ConfigurationConflict

The instance type type is not supported in Outpost outpost-arn

叢集 ARN
您已終止控制平面 Amazon EC2 執行個體,或 run-instance 已成功,但觀察到的狀態變更為 Terminated。您的 Outpost 重新連線後一段時間可能會發生此情況,且 Amazon EBS 內部錯誤會導致 Amazon EC2 內部工作流程失敗。

InternalFailure

EC2 instance state "Terminated" is unexpected

叢集 ARN

您在 Outpost 上的容量不足。如果 Outpost 與 AWS 區域 中斷連線後,在建立叢集時也會發生此情況。

ResourceLimitExceeded

There is not enough capacity on the Outpost to launch or start the instance.

叢集 ARN
您的帳戶已超過您的安全群組配額。

ResourceLimitExceeded

Amazon EC2 API 傳回的錯誤訊息 目標 VPC ID
您的帳戶已超過您的彈性網路介面配額。

ResourceLimitExceeded

Amazon EC2 API 傳回的錯誤訊息 目標子網路 ID

控制平面執行個體無法透過 AWS Systems Manager 連線。如需解決方案,請參閱控制平面執行個體無法透過 AWS Systems Manager 連線

ClusterUnreachable

Amazon EKS 控制平面執行個體無法透過 SSM 連線。請確認您的 SSM 和網路組態,並參考 Outpost 上的 EKS 疑難排解文件。

Amazon EC2 執行個體 ID
取得受管安全群組或彈性網路介面的詳細資訊時發生錯誤。

根據 Amazon EC2 用戶端錯誤代碼。

Amazon EC2 API 傳回的錯誤訊息 所有受管的安全群組 ID
授權或撤銷安全群組輸入規則時發生錯誤。這適用於叢集和控制平面安全群組。 根據 Amazon EC2 用戶端錯誤代碼。 Amazon EC2 API 傳回的錯誤訊息 有問題的安全群組 ID
刪除控制平面執行個體的彈性網路介面時發生錯誤。 根據 Amazon EC2 用戶端錯誤代碼。 Amazon EC2 API 傳回的錯誤訊息 有問題的彈性網路介面 ID

下表列出 describe-cluster 回應的運作狀態欄位中呈現的其他 AWS 服務 的錯誤。

Amazon EC2 錯誤代碼 叢集運作狀態問題代碼 描述

AuthFailure

AccessDenied

基於各種原因,可能會發生此錯誤。最常見的原因是您意外移除了服務用於從控制平面縮小服務連結角色政策範圍的標籤。如果發生這種情況,Amazon EKS 將無法再管理和監控這些 AWS 資源。

UnauthorizedOperation

AccessDenied

基於各種原因,可能會發生此錯誤。最常見的原因是您意外移除了服務用於從控制平面縮小服務連結角色政策範圍的標籤。如果發生這種情況,Amazon EKS 將無法再管理和監控這些 AWS 資源。

InvalidSubnetID.NotFound

ResourceNotFound

找不到安全群組輸入規則的子網路 ID 時,會發生此錯誤。

InvalidPermission.NotFound

ResourceNotFound

安全群組輸入規則的許可不正確時,會發生此錯誤。

InvalidGroup.NotFound

ResourceNotFound

找不到安全群組輸入規則的群組時,會發生此錯誤。

InvalidNetworkInterfaceID.NotFound

ResourceNotFound

找不到安全群組輸入規則的網路介面 ID 時,會發生此錯誤。

InsufficientFreeAddressesInSubnet

ResourceLimitExceeded

超過子網路資源配額時,會發生此錯誤。

InsufficientCapacityOnOutpost

ResourceLimitExceeded

超過 Outpost 容量配額時,會發生此錯誤。

NetworkInterfaceLimitExceeded

ResourceLimitExceeded

超過彈性網路介面配額時,會發生此錯誤。

SecurityGroupLimitExceeded

ResourceLimitExceeded

超過安全群組配額時,會發生此錯誤。

VcpuLimitExceeded

ResourceLimitExceeded

在新帳戶中建立 Amazon EC2 執行個體時,便會觀察到這種狀況。此錯誤可能類似以下內容:"You have requested more vCPU capacity than your current vCPU limit of 32 allows for the instance bucket that the specified instance type belongs to. Please visit http://aws.amazon.com/contact-us/ec2-request to request an adjustment to this limit."

InvalidParameterValue

ConfigurationConflict

如果 Outpost 不支援指定的執行個體類型,Amazon EC2 會傳回此錯誤代碼。

所有其他失敗

InternalFailure

本機叢集需要不同於雲端中託管的 Amazon EKS 叢集的許可和政策。當叢集無法建立並產生InvalidPermissions錯誤時,請仔細檢查您使用的叢集角色是否已附加 AmazonEks LocalOutpostClusterPolicy 管理政策。所有其他 API 呼叫需要與雲端中 Amazon EKS 叢集相同的許可集。

建立本機叢集所需的時間量因數個因素而異。這些因素包括您的網路組態、Outpost 組態以及叢集的組態。一般而言,本機叢集會在 15-20 分鐘內建立並變更為 ACTIVE 狀態。如果本機叢集仍處於 CREATING 狀態,則您可以在 cluster.health 輸出欄位中呼叫 describe-cluster 以取得有關原因的資訊。

最常見的問題如下:

AWS Systems Manager (Systems Manager) 遇到下列問題:
  • 您的叢集無法從 Systems Manager 所在的 AWS 區域 連接至控制平面執行個體。您可以從區域內的堡壘主機呼叫 aws ssm start-session --target instance-id 進行驗證。如果該命令不起作用,則請檢查 Systems Manager 是否在控制平面執行個體上執行。或者,另一個解決方法是刪除叢集,然後重新建立叢集。

  • Systems Manager 控制平面執行個體可能無法存取網際網路。檢查您在建立叢集時提供的子網路是否具有 NAT 閘道和具有網際網路閘道的 VPC。使用 VPC Reachability Analyzer 確認控制平面執行個體是否可連線至網際網路閘道。如需詳細資訊,請參閱 Getting started with VPC Reachability Analyzer (VPC Reachability Analyzer 入門)。

  • 您提供的角色 ARN 缺少政策。檢查是否已從角色移除 AWS 管理策略:AmazonEKS LocalOutpostClusterPolicy。如果 AWS CloudFormation 堆疊設定錯誤,則也可能發生這種情況。

建立叢集時錯誤設定與指定多個子網路:
  • 所有提供的子網路必須與相同的 Outpost 關聯,並且必須互相連線。如果在建立叢集時指定多個子網路,Amazon EKS 會嘗試將控制平面執行個體散佈到多個子網路。

  • Amazon EKS 受管的安全群組將套用至彈性網路介面。但是,其他組態元素 (例如 NACL 防火牆規則) 可能會與彈性網路介面的規則衝突。

VPC 和子網路 DNS 組態設定錯誤或遺失

檢閱 Amazon EKS 本機叢集 VPC 與子網路要求和考量事項

常見原因:
  • AMI 問題:

    • 您正在使用不支援的 AMI。您必須使用 Amazon EKS 最佳化的 Amazon Linux AMI Amazon EKS 最佳化 Amazon Linux 的 v20220620 或更新版本。

    • 如果您已使用 AWS CloudFormation 範本建立您的節點,確保其沒有使用不支援的 AMI。

  • 遺失 AWS IAM Authenticator ConfigMap – 如果遺失,您必須建立它。如需詳細資訊,請參閱將 aws-authConfigMap 套用至您的叢集

  • 使用錯誤的安全群組 – 確保將 eks-cluster-sg-cluster-name-uniqueid 用於您工作節點的安全群組。選取的安全群組是由 AWS CloudFormation 變更,以在每次使用堆疊時允許新的安全群組。

  • 依照未預期的私人連結 VPC 步驟:傳遞了錯誤的 CA 資料 (--b64-cluster-ca) 或 API 端點 (--apiserver-endpoint)。

  • 設定錯誤的 Pod 安全政策:

    • CoreDNS 和 Amazon VPC CNI plugin for Kubernetes Daemonsets 必須在加入並與叢集進行通訊的節點上執行。

    • Amazon VPC CNI plugin for Kubernetes 需要某些有權限設定的聯網功能,才能正常運作。您可以使用下列命令檢視有權限設定的聯網功能:kubectl describe psp eks.privileged

    建議您不要修改預設 Pod 安全政策。如需詳細資訊,請參閱Pod 安全政策

當 Outpost 與其關聯之 AWS 區域 的連線中斷時,Kubernetes 叢集可能會繼續正常運作。但是,如果叢集無法正常運作,請依照 為網路連線中斷做好準備 中的疑難排解步驟執行。如果您遇到其他問題,則請聯絡 AWS Support。AWS Support 可以指導您下載和執行日誌收集工具。如此一來,您就可以從 Kubernetes 叢集控制平面執行個體收集日誌,並將其傳送至 AWS Support 支援以供進一步調查。

Amazon EKS 控制平面執行個體無法透過 AWS Systems Manager (Systems Manager) 連線時,Amazon EKS 會顯示下列叢集錯誤。

Amazon EKS control plane instances are not reachable through SSM. Please verify your SSM and network configuration, and reference the EKS on Outposts troubleshooting documentation.

若要解決此問題,請確保您的 VPC 和子網路符合 Amazon EKS 本機叢集 VPC 與子網路要求和考量事項 中的要求,且您已完成《AWS Systems Manager 使用者指南》中設定工作階段管理員中的步驟。