我想排查我在 Amazon Elastic Kubernetes Service (Amazon EKS) 集群中使用托管节点组的自定义启动模板时出现的错误。
简短描述
当您在 Amazon EKS 集群中使用托管节点组的自定义启动模板时,可能会出现以下一种错误:
- “client.InternalError: 启动时出现客户端错误”
- "SourceEc2LaunchTemplateNotFound or The Amazon EC2 Launch Template lt-xxxxxxxxxxxxxxxxx version x was not found"
- "Node group entered a DEGRADED status"
解决方法
Client.InternalError: 启动时出现客户端错误
在自定义启动模板中使用加密的 Amazon Elastic Block Store (Amazon EBS) 卷时,如果权限不正确,就会出现此错误。要检查加密状态和 AWS Identity and Access Management (IAM) 权限或策略,请完成以下任务:
SourceEc2LaunchTemplateNotFound or The Amazon EC2 Launch Template lt-xxxxxxxxxxxxxxxxx version x was not found
当您通过节点的自动扩缩组(而非 Amazon EKS)手动更改自定义启动模板版本时,就会出现此错误。要解决此问题,您必须使用 Amazon EKS 更新启动模板版本。
要从托管节点组更新 EC2 启动模板,请完成以下步骤:
- 打开 Amazon EKS 控制台。
- 在导航窗格上,选择集群。
- 在群集名称下,选择包含要更新的节点组的群集。
- 选择计算选项卡。
- 对于节点组,选择您的节点,然后选择更改版本。
- 选择要应用于节点组的版本。确保将更新策略设置为滚动更新。
- 选择更新。
如果在使用自定义启动模板创建节点组时删除参考模板,也会出现此错误。当您使用自定义启动模板创建节点组时,Amazon EKS 会复制该模板。如果删除原始模板,则必须重新创建节点组。
要重新创建节点组,请完成以下步骤:
-
启动新的节点组。
-
运行以下命令,验证所有节点是否运行正常、是否处于 Ready 状态并已加入集群:
$ kubectl get nodes
-
耗尽 Worker 节点。
-
删除原始节点组。
节点组会在创建完新的启动模板后进入 DEGRADED 状态
节点组进入 DEGRADED 状态时可能会显示一条类似于以下错误的消息:
"The Amazon EC2 Launch Template : lt-xxxxxxxxxxxxxxxxx has a new version associated with your Autoscaling group, which is not managed by Amazon EKS.Expected Launch Template version: x".
当托管节点组的 Amazon EC2 启动模板版本与 Amazon EKS 创建的版本不匹配时,就会出现此错误。无法直接更新未使用自定义启动模板的现有节点组。要解决此错误,请使用您的首选设置创建启动模板和版本。然后,使用启动模板创建节点组。如果新节点组是从您的自定义模板启动的,则请创建该模板的新版本。无需将节点组置于 DEGRADED 状态即可使用此模板。
相关信息
使用启动模板自定义托管节点
启动模板配置基础知识