我在 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 啟動範本,請完成下列步驟:
- 開啟 EKS 主控台。
- 選擇包含要更新的節點群組的叢集。
- 選擇組態標籤,然後選擇運算標籤。
- 在啟動範本下的節點群組頁面上,選擇變更版本。
- 選取要套用至節點群組的版本。請確定更新策略已設定為持續更新。
- 選擇更新。
注意: 最佳實務為使用新版本的 EC2 啟動範本更新節點群組。
如果您並未使用自訂啟動範本,而收到 Ec2LaunchTemplateVersionMismatch 錯誤,則檢查您的啟動範本版本。您的工作節點和 EKS 節點群組可能不會使用相同的啟動範本版本。若要解決此問題,請移至 Auto Scaling 主控台以還原至 EKS 建立的版本。如需詳細資訊,請參閱受管節點群組錯誤。如需受管節點群組中失敗節點的其他解決方法,請參閱如何讓我的工作節點加入我的 Amazon EKS 叢集?