连接混合节点 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

连接混合节点

注意

以下步骤适用于运行除 Bottlerocket 以外的兼容操作系统的混合节点。有关连接运行 Bottlerocket 的混合节点的步骤,请参阅连接使用 Bottlerocket 的混合节点

本主题介绍如何将混合节点连接到 Amazon EKS 集群。混合节点加入集群后,将在 Amazon EKS 控制台和兼容 Kubernetes 的工具(例如 kubectl)中显示并且状态为“未就绪”。完成本页介绍的步骤后,为混合节点配置 CNI 以确保混合节点可以随时用于运行应用程序。

先决条件

在将混合节点连接到 Amazon EKS 集群之前,请确保您已完成先决步骤。

第 1 步:在每台本地主机上安装混合节点 CLI (nodeadm)

如果您预构建的操作系统映像已经包含 Amazon EKS 混合节点功能 CLI (nodeadm),则可以跳过此步骤。有关 nodeadm 混合节点版本的更多信息,请参阅混合节点 nodeadm 参考

nodeadm 的混合节点版本在 Amazon S3 中托管,由 Amazon CloudFront 分发。要在每台本地主机上安装 nodeadm,您可以在本地主机上运行以下命令。

x86_64 主机:

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/amd64/nodeadm'

ARM 主机

curl -OL 'https://hybrid-assets.eks.amazonaws.com/releases/latest/bin/linux/arm64/nodeadm'

将可执行文件权限添加到每台主机上下载的二进制文件。

chmod +x nodeadm

第 2 步:使用 nodeadm 安装混合节点依赖项

如果在预构建的操作系统映像中安装混合节点依赖项,则可以跳过此步骤。nodeadm install 命令可用于安装混合节点必需的所有依赖项。混合节点依赖项包括 containerd、kubelet、kubectl 以及 Amazon SSM 或 Amazon IAM Roles Anywhere 组件。要详细了解 混合节点 nodeadm 参考 安装的组件和文件位置,请参阅nodeadm install。要详细了解必须在本地防火墙中为 nodeadm install 进程允许的域,请参阅准备混合节点的联网

运行以下命令,从而在本地主机上安装混合节点依赖项。运行以下命令的用户必须具有您主机上的 sudo/root 访问权限。

重要

运行混合节点 CLI (nodeadm) 的用户必须具有您主机上的 sudo/root 访问权限。

  • K8S_VERSION 替换为 Amazon EKS 集群的 Kubernetes 次要版本,例如 1.31。有关所支持 Kubernetes 版本的列表,请参阅 了解 EKS 上的 Kubernetes 版本生命周期

  • 请将 CREDS_PROVIDER 替换为您使用的本地凭证提供者。Amazon SSM 的有效值为 ssm,Amazon IAM Roles Anywhere 的有效值为 iam-ra

nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER

第 3 步:将混合节点连接到集群

在将混合节点连接到集群之前,请确保您的本地防火墙和集群安全组中已经允许在 Amazon EKS 控制面板与混合节点之间进行通信所必需的权限。此步骤中出现的大多数问题都与防火墙配置、安全组配置或混合节点 IAM 角色配置有关。

重要

运行混合节点 CLI (nodeadm) 的用户必须具有您主机上的 sudo/root 访问权限。

  1. 在每台主机上创建一个包含适用于部署的值的 nodeConfig.yaml 文件。有关可用配置设置的完整说明,请参阅混合节点 nodeadm 参考。如果混合节点 IAM 角色没有执行 eks:DescribeCluster 操作的权限,则必须在 nodeConfig.yaml 的集群部分中传递 Kubernetes API 端点、集群 CA 捆绑和 Kubernetes 服务 IPv4 CIDR。

    1. 如果您的本地凭证提供者为 Amazon SSM 混合激活,请使用以下 nodeConfig.yaml 示例。

      1. CLUSTER_NAME 替换为您的集群名称。

      2. 请将 Amazon 替换为集群所在的 AWS_REGION 区域。例如 us-west-2

      3. 请将 ACTIVATION_CODE 替换为创建 Amazon SSM 混合激活时收到的激活码。请参阅准备用于混合节点的凭证了解更多信息。

      4. 请将 ACTIVATION_ID 替换为创建 Amazon SSM 混合激活时收到的激活 ID。您可以通过 Amazon Systems Manager 控制台或 Amazon CLI aws ssm describe-activations 命令查看此信息。

        apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: CLUSTER_NAME region: AWS_REGION hybrid: ssm: activationCode: ACTIVATION_CODE activationId: ACTIVATION_ID
    2. 如果您的本地凭证提供者为 Amazon IAM Roles Anywhere,请使用以下 nodeConfig.yaml 示例。

      1. CLUSTER_NAME 替换为您的集群名称。

      2. 请将 Amazon 替换为集群所在的 AWS_REGION 区域。例如 us-west-2

      3. 请将 NODE_NAME 替换为节点的名称。如果您为混合节点 IAM 角色配置的信任策略使用 "sts:RoleSessionName": "${aws:PrincipalTag/x509Subject/CN}" 资源条件,则节点名称必须与主机上证书的 CN 一致。您使用的 nodeName 长度不得超过 64 个字符。

      4. 请将 TRUST_ANCHOR_ARN 替换为您在“准备用于混合节点的凭证”步骤中配置的信任锚的 ARN。

      5. 请将 PROFILE_ARN 替换为您在“准备用于混合节点的凭证”步骤中配置的信任锚的 ARN。

      6. ROLE_ARN 替换为混合节点 IAM 角色的 ARN。

      7. 请将 CERTIFICATE_PATH 替换为磁盘中指向节点证书的路径。如果不指定此参数,则默认值为 /etc/iam/pki/server.pem

      8. 请将 KEY_PATH 替换为磁盘中指向证书私有密钥的路径。如果不指定此参数,则默认值为 /etc/iam/pki/server.key

        apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: cluster: name: CLUSTER_NAME region: AWS_REGION hybrid: iamRolesAnywhere: nodeName: NODE_NAME trustAnchorArn: TRUST_ANCHOR_ARN profileArn: PROFILE_ARN roleArn: ROLE_ARN certificatePath: CERTIFICATE_PATH privateKeyPath: KEY_PATH
  2. 使用您的 nodeConfig.yaml 运行 nodeadm init 命令,从而将混合节点连接到 Amazon EKS 集群。

    nodeadm init -c file://nodeConfig.yaml

如果上述命令成功完成,则表示混合节点已加入您的 Amazon EKS 集群。您可以在 Amazon EKS 控制台中导航到集群的“计算”选项卡(确保 IAM 主体具有查看权限)或使用 kubectl get nodes 来验证此信息。

重要

您的节点将处于 Not Ready 状态,此状态符合预期,是因混合节点上缺少正在运行的 CNI 所致。如果节点未加入集群,请参阅混合节点故障排除

第 4 步:为混合节点配置 CNI

要使混合节点能够随时运行应用程序,请继续完成为混合节点配置 CNI中的步骤。