如何解決 Amazon EKS 叢集中的受管節點群組錯誤?

2 分的閱讀內容
0

我在 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集中的受管節點群組發生問題。

簡短說明

以下是在 Amazon EKS 叢集中受管節點群組錯誤的常見原因:

  • 不正確的 DHCP 選項: 向 API 伺服器註冊節點時,您會收到錯誤
  • 缺少 AWS Key Management Service (KMS) 金鑰權限: 在使用 AWS KMS key 加密的 Amazon Elastic Block Store (Amazon EBS) 磁碟區啟動 Auto Scaling 群組中的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時,您會收到錯誤
  • 不正確的啟動範本: 由於 EC2 啟動範本版本與 Amazon EKS 建立的版本不符時,您的受管節點群組就會處於降級狀態

解決方法

檢查您的 DHCP 選項

如果您在自訂 DNS 中使用不正確的 DHCP 選項,則可能會收到下列錯誤:

"Node "ip-x-x-x-x.eu-region.compute.internal" is invalid: metadata.labels: Invalid value"

確認您的主機名稱的字元未超過 63 個。若要檢閱您的 DHCP 選項,請參閱 Amazon VPC 中的 DHCP 選項集。指定您的主機名稱以符合 AWS 區域。如果是 us-east-1 中的 AmazonProvidedDNS 伺服器,請指定 ec2.internal。如果是其他區域中的 AmazonProvidedDNS 伺服器,請指定 region.compute.internal

在 us-east-1 中的 DHCP 選項集範例:

domain-name: ec2.internal
domain-name-servers: AmazonProvidedDNS

在其他區域中的 DHCP 選項集範例:

domain-name: region.compute.internal
domain-name-servers: AmazonProvidedDNS

自訂 DNS 的 DHCP 選項集範例:

domain-name: custom DNS name
domain-name-servers: domain name server

注意: 請將 region 取代為您的區域、將 custom DNS name 取代為您的 DNS 名稱,並將 domain name server 取代為您的網域名稱伺服器。

如需詳細資訊,請參閱 DHCP 選項集概念。如果您的 DHCP 選項集與具有多個作業系統的執行個體的 VPC 關聯,最好僅指定一個網域名稱。

為 EBS 磁碟區加密設定金鑰政策

如果 Auto Scaling 群組服務角色缺少權限,您可能會看到下列錯誤:

"AccessDeniedException: User: arn:aws:sts::xxxxxxxxxxxx:assumed-role/AWSServiceRoleForAutoScaling/AutoScaling is not authorized to perform: kms:GenerateDataKeyWithoutPlaintext on resource: ARN of KMS key"

如果受管節點使用經過 AWS KMS key 加密的 Amazon EBS 磁碟區,則 Auto Scaling 群組服務角色無法存取該磁碟區。

Auto Scaling 群組服務角色必須具有下列權限才能使用加密的 EBS 磁碟區:

  • kms:Encrypt
  • kms:Decrypt
  • kms:ReEncrypt*
  • kms:GenerateDataKey*
  • kms:DescribeKey
  • kms:CreateGrant

若要設定正確的 KMS 金鑰政策,請參閱使用加密的磁碟區所需的 AWS KMS key 政策。若要允許更多 IAM 角色使用加密的 EBS 磁碟區,您可以修改金鑰政策。如需詳細資訊,請參閱允許主要使用者使用 KMS 金鑰。如需 KMS 金鑰存取管理的詳細資訊,請參閱 AWS Key Management Service

更新啟動範本版本

注意: 從受管節點群組更新 EC2 啟動範本之前,請建立新版本。如需詳細資訊,請參閱使用您定義的參數建立新啟動範本

如果您直接從 Auto Scaling 群組手動更新啟動範本,則可能會收到下列錯誤:

"Ec2LaunchTemplateVersionMismatch"

若要從受管節點群組更新 EC2 啟動範本,請完成下列步驟:

  1. 開啟 EKS 主控台
  2. 選擇包含要更新的節點群組的叢集。
  3. 選擇組態標籤,然後選擇運算標籤。
  4. 在啟動範本下的節點群組頁面上,選擇變更版本
  5. 選取要套用至節點群組的版本。請確定更新策略已設定為持續更新
  6. 選擇更新

注意: 最佳實務為使用新版本的 EC2 啟動範本更新節點群組。

如果您並未使用自訂啟動範本,而收到 Ec2LaunchTemplateVersionMismatch 錯誤,則檢查您的啟動範本版本。您的工作節點和 EKS 節點群組可能不會使用相同的啟動範本版本。若要解決此問題,請移至 Auto Scaling 主控台以還原至 EKS 建立的版本。如需詳細資訊,請參閱受管節點群組錯誤。如需受管節點群組中失敗節點的其他解決方法,請參閱如何讓我的工作節點加入我的 Amazon EKS 叢集?

AWS 官方
AWS 官方已更新 1 年前