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

上次更新日期:2021 年 11 月 15 日

我在 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集中遇到受管節點群組的相關問題。

簡短描述

向 API 伺服器註冊節點時,您會收到錯誤訊息。

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

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

若要解決此問題,請完成解決方案檢查您的 DHCP 選項章節中的步驟。

當您使用以 KMS 金鑰加密的 Amazon Elastic Block Store (Amazon EBS) 磁碟區在 Auto Scaling 群組中啟動 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體時,會收到錯誤訊息。

範例錯誤:

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

如果受管節點使用以 KMS 金鑰加密的 Amazon EBS 磁碟區,則 Auto Scaling 群組服務角色無法存取該磁碟區。若要設定金鑰政策,請參閱解決方案設定 EBS 磁碟區加密的金鑰政策章節。

您的受管節點群組處於降級狀態,因為 EC2 啟動範本版本與 Amazon EKS 建立的版本不相符。

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

Ec2LaunchTemplateVersionMismatch

若要解決此問題,請完成解決方案更新啟動範本版本章節中的步驟。

如需受管節點群組中失敗節點的其他解決方案,請參閱如何讓工作節點加入我的 Amazon EKS 叢集?

解決方案

檢查您的 DHCP 選項

確認您的主機名稱不超過 63 個字元。若要檢閱 DHCP 選項,請參閱使用 DHCP 選項集

指定您的主機名稱以與 AWS 區域相符。對於 us-east-1 中的 AmazonProvidedDNS 伺服器,請指定 ec2.internal。對於其他 AWS 區域的 AmazonProvidedDNS 伺服器,請指定 region.compute.internal

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

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

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

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

自訂 DNS 的 DHCP 選項集範例:

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

注意:區域名稱取代為您的區域,將自訂 DNS 名稱取代為您的 DNS 名稱,將網域名稱伺服器取代為您的網域名稱伺服器。

如需詳細資訊,請參閱 DHCP 選項集概觀domain-name 章節。

注意: 如果您的 DHCP 選項集 VPC (其中的執行個體具有多個作業系統) 相關聯,最佳實務是僅指定一個網域名稱。

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

Auto Scaling 群組服務角色必須具有下列許可,才能與加密的 EBS 磁碟區搭配使用:

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

若要設定正確的 KMS 金鑰政策,請參閱與加密磁碟區搭配使用的必要 AWS KMS 金鑰政策

若要允許更多 IAM 角色使用加密的 EBS 磁碟區,您可以修改金鑰政策。如需詳細資訊,請參閱允許金鑰使用者使用 KMS 金鑰

如需 KMS 金鑰存取管理的詳細資訊,請參閱管理 KMS 金鑰的存取權

更新啟動範本版本

注意:從受管理節點群組更新 EC2 啟動範本之前,請先建立新版本。若要取得更多資訊,請參閱使用您定義的參數建立新啟動範本

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

  1. 開啟 EKS 主控台
  2. 選取包含要更新之節點群組的叢集。
  3. 選擇 Configuration (組態) 索引標籤,然後選擇 Compute (運算) 索引標籤。
  4. 在啟動範本下的節點群組頁面上,選擇 Change version (變更版本)。
  5. 選取要套用至節點群組的版本。請確定更新策略設定為 Rolling Update (滾動更新)。
  6. 選擇 Update (更新)。

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

如果您尚未使用自訂啟動範本,並且出現 Ec2LaunchTemplateVersionMismatch 錯誤,則您的工作節點不會使用與 EKS 節點群組相同的版本。若要解決此問題,請移至 Auto Scaling 主控台,以還原為 EKS 建立的版本。如需詳細資訊,請參閱受管節點群組錯誤


此文章是否有幫助?


您是否需要帳單或技術支援?