跳至内容

如何解决 Amazon EKS 中托管节点组的自定义启动模板问题?

2 分钟阅读
0

我想排查我在 Amazon Elastic Kubernetes Service (Amazon EKS) 集群中使用托管节点组的自定义启动模板时出现的错误。

简短描述

当您在 Amazon EKS 集群中使用托管节点组的自定义启动模板时,可能会出现以下一种错误:

  • "Client.InternalError: Client error on launch"
  • "SourceEc2LaunchTemplateNotFound or The Amazon EC2 Launch Template lt-xxxxxxxxxxxxxxxxx version x was not found"
  • "Node group entered a DEGRADED status"

解决方法

启动时出现客户端错误

在自定义启动模板中使用加密的 Amazon Elastic Block Store (Amazon EBS) 卷时,如果权限不正确,就会出现此错误。要检查加密状态和 AWS Identity and Access Management (IAM) 权限或策略,请完成以下任务:

未找到启动模板

当您通过节点的自动扩缩组(而非 Amazon EKS)手动更改自定义启动模板版本时,就会出现此错误。要解决此问题,您必须使用 Amazon EKS 更新启动模板版本

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

要从托管节点组更新您的 Amazon Elastic Compute Cloud (Amazon EC2) 启动模板,请完成以下步骤:

  1. 打开 Amazon EKS 控制台
  2. 在导航窗格中,选择 Clusters(集群)。
  3. Cluster name(集群名称)下,选择包含要更新的节点组的集群。
  4. 选择 Compute(计算)选项卡。
  5. Node groups(节点组)下,选择您的节点,然后选择 Change version(更改版本)。
    **注意:**仅当启动模板有新版本可用时,您才会看到此选项。如果您看不到该选项,请使用 aws eks update-nodegroup-version AWS CLI 命令修改节点组的启动模板版本。
  6. 选择要应用于节点组的版本。确保将更新策略设置为滚动更新
  7. 选择更新

如果在使用自定义启动模板创建节点组时删除参考模板,也会出现此错误。如果您使用自定义启动模板,则 Amazon EKS 会复制该模板。如果删除原始模板,则必须重新创建节点组。

要重新创建节点组,请完成以下步骤:

  1. 启动新的节点组

  2. 运行以下命令,验证所有节点是否运行正常、是否处于 Ready 状态并已加入集群:

    $ kubectl get nodes
  3. 耗尽 Worker 节点

  4. 删除原始节点组

节点组进入 DEGRADED 状态

在 Amazon EKS 创建带有类似以下错误消息的启动模板后,节点组会进入 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 状态即可使用此模板。

相关信息

使用启动模板自定义托管节点

启动模板配置基础知识

AWS 官方已更新 7 个月前