我在 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 啟動範本,請完成以下步驟:
- 開啟 EKS 主控台。
- 選取包含要更新之節點群組的叢集。
- 選擇 Configuration (組態) 索引標籤,然後選擇 Compute (運算) 索引標籤。
- 在啟動範本下的節點群組頁面上,選擇 Change version (變更版本)。
- 選取要套用至節點群組的版本。請確定更新策略設定為 Rolling Update (滾動更新)。
- 選擇 Update (更新)。
**注意:**最佳實務是使用新版本的 EC2 啟動範本更新節點群組。
如果您尚未使用自訂啟動範本,並且出現 Ec2LaunchTemplateVersionMismatch 錯誤,則您的工作節點不會使用與 EKS 節點群組相同的版本。若要解決此問題,請移至 Auto Scaling 主控台,以還原為 EKS 建立的版本。如需詳細資訊,請參閱受管節點群組錯誤。