如何将工作线程节点加入 Amazon EKS 集群?

上次更新时间:2021 年 1 月 13 日

我的工作线程节点无法加入 Amazon Elastic Kubernetes Service (Amazon EKS) 集群。

简短描述

要将工作线程节点加入 Amazon EKS 集群,您必须完成以下步骤:

  • 确认您的 Amazon Virtual Private Cloud (Amazon VPC) 支持 DNS
  • 获取工作线程节点实例配置文件的相应权限
  • 配置工作线程节点的用户数据
  • 验证工作线程节点是否在与 Amazon EKS 集群关联的子网中
  • 使用工作线程节点的 NodeInstanceRole 更新 aws-auth ConfigMap
  • 满足工作线程节点的安全组要求
  • 为您的工作线程节点设置标签
  • 确认您的工作线程节点可以到达 Amazon EKS 集群的 API 服务器终端节点
  • 使用 SSH 连接到 Amazon EKS 工作线程节点的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,然后在 kubelet 代理日志中搜索错误

重要提示:以下步骤不包括在不满足以下条件的环境中,在 Amazon EKS 集群中注册工作线程节点所需的配置:

  • 在 Amazon EKS 集群的 VPC 中,配置参数 domain-name-servers 设置为 AmazonProvidedDNS。有关更多信息,请参阅 DHCP 选项集
  • 您正在使用经过 Amazon EKS 优化的 Linux Amazon 系统映像 (AMI) 来启动工作线程节点。
    注意:经过 Amazon EKS 优化的 Linux AMI 提供了所有必要的配置,包括用于将工作线程节点注册到您的 Amazon EKS 集群的 /etc/eks/bootstrap.sh 引导脚本。

解决方法

确认您的 VPC 支持 DNS

确认您的 Amazon EKS 集群的 VPC 支持 DNS 主机名和 DNS 解析。

如果需要,请查看和更新您的 VPC 的 DNS 支持属性

获取工作线程节点实例配置文件的相应权限

将以下 AWS 管理策略附加到与您的工作线程节点实例配置文件关联的角色:

  • AmazonEKSWorkerNodePolicy
  • AmazonEKS_CNI_Policy
  • AmazonEC2ContainerRegistryReadOnly

要将策略附加到角色,请参阅添加 IAM 身份权限(控制台)

配置工作线程节点的用户数据

注意:如果您使用 AWS CloudFormation 启动工作线程节点,则不必为工作线程节点配置用户数据。

要为工作线程节点配置用户数据,请在启动 Amazon EC2 实例时指定用户数据

例如,如果您使用的是 Terraform 等第三方工具,请更新用户数据字段以使用以下命令启动您的 Amazon EKS 工作线程节点:

#!/bin/bash
set -o xtrace
/etc/eks/bootstrap.sh ${ClusterName} ${BootstrapArguments}

重要提示:${ClusterName} 替换为您的 Amazon EKS 集群的名称。将 ${BootstrapArguments} 替换为其他引导值,或将该属性留空。

验证工作线程节点是否在与 Amazon EKS 集群关联的子网中

1.    打开 Amazon EKS 控制台

2.    选择集群,然后选择您的集群。

3.    在联网部分中,确认与集群关联的子网。

4.    验证您的工作线程节点是否仅属于您在步骤 3 中确定的子网。

使用工作线程节点的 NodeInstanceRole 更新 aws-auth ConfigMap

验证是否使用工作线程节点(而不是实例配置文件)的 AWS Identity and Access Management (IAM) 角色正确配置了 aws-auth ConfigMap。

满足工作线程节点的安全组要求

确认已为控制层面安全组和工作线程节点安全组配置了入站和出站流量的建议设置

为您的工作线程节点设置标签

对于工作线程节点的标签属性,请将密钥设置为 kubernetes.io/cluster/clusterName,并将设置为 owned

如需更多信息,请参阅集群 VPC 注意事项

确认您的工作线程节点可以到达 Amazon EKS 集群的 API 服务器终端节点

请考虑以下事项:

  • 您可以在与路由表关联的子网中启动工作线程节点,该路由表具有通过 NAT 网关或互联网网关到 API 终端节点的路由。
  • 如果您的工作线程节点是在受限制的专有网络中启动的,请确认您的工作线程节点可以到达 Amazon EKS API 服务器终端节点。
  • 如果使用自定义 DNS 而不是 AmazonProvidedDNS 将您的工作线程节点作为 VPC 的一部分启动,且如果禁用对终端节点的公开访问并且仅启用了专有访问,则您的工作线程节点可能无法解析 Amazon EKS 集群的终端节点。有关更多信息,请参阅启用 Amazon EKS 集群终端节点的 DNS 解析

使用 SSH 连接到您的 Amazon EKS 工作线程节点实例并检查 kubelet 代理日志

kubelet 代理已配置为 systemd 服务。

1.    要验证 kubelet 日志,请运行以下命令:

journalctl -f -u kubelet

2.    要解决任何问题,请查看 Amazon EKS 故障排除指南以了解常见错误。


这篇文章对您有帮助吗?


您是否需要账单或技术支持?