

 **帮助改进此页面** 

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

# 连接混合节点
<a name="hybrid-nodes-join"></a>

**注意**  
以下步骤适用于运行除 Bottlerocket 以外的兼容操作系统的混合节点。有关连接运行 Bottlerocket 的混合节点的步骤，请参阅[连接使用 Bottlerocket 的混合节点](hybrid-nodes-bottlerocket.md)。

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

## 先决条件
<a name="_prerequisites"></a>

在将混合节点连接到 Amazon EKS 集群之前，请确保您已完成先决步骤。
+ 您已建立从本地环境到托管 Amazon EKS 集群的 AWS 区域的连接。请参阅[准备混合节点的联网](hybrid-nodes-networking.md)了解更多信息。
+ 您已在本地主机上安装了适用于混合节点的兼容操作系统。请参阅[为混合节点准备操作系统](hybrid-nodes-os.md)了解更多信息。
+ 您已经创建了混合节点 IAM 角色并设置了本地凭证提供者（AWS Systems Manager 混合激活或 AWS IAM Roles Anywhere）。请参阅[准备用于混合节点的凭证](hybrid-nodes-creds.md)了解更多信息。
+ 您已经创建启用了混合节点的 Amazon EKS 集群。请参阅[创建具有混合节点的 Amazon EKS 集群](hybrid-nodes-cluster-create.md)了解更多信息。
+ 您已为您的混合节点 IAM 角色关联了 Kubernetes 基于角色的访问控制（RBAC）权限。请参阅[准备混合节点的集群访问权限](hybrid-nodes-cluster-prep.md)了解更多信息。

## 第 1 步：在每台本地主机上安装混合节点 CLI (`nodeadm`)
<a name="_step_1_install_the_hybrid_nodes_cli_nodeadm_on_each_on_premises_host"></a>

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

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

 **x86\$164 主机：**

```
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` 安装混合节点依赖项
<a name="_step_2_install_the_hybrid_nodes_dependencies_with_nodeadm"></a>

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

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

**重要**  
运行混合节点 CLI (`nodeadm`) 的用户必须具有您主机上的 sudo/root 访问权限。
+ 请 `K8S_VERSION` 替换为 Amazon EKS 集群的 Kubernetes 次要版本，例如 `1.31`。有关支持的 Kubernetes 版本的列表，请参阅 [Amazon EKS 支持的版本](https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html)。
+ 请将 `CREDS_PROVIDER` 替换为您使用的本地凭证提供者。AWS SSM 的有效值为 `ssm`，AWS IAM Roles Anywhere 的有效值为 `iam-ra`。

```
nodeadm install K8S_VERSION --credential-provider CREDS_PROVIDER
```

## 第 3 步：将混合节点连接到集群
<a name="_step_3_connect_hybrid_nodes_to_your_cluster"></a>

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

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

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

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

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

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

      1. 请将 `ACTIVATION_CODE` 替换为创建 AWS SSM 混合激活时收到的激活码。请参阅[准备用于混合节点的凭证](hybrid-nodes-creds.md)了解更多信息。

      1. 请将 `ACTIVATION_ID` 替换为创建 AWS SSM 混合激活时收到的激活 ID。您可以通过 AWS Systems Manager 控制台或 AWS 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
         ```

   1. 如果您的本地凭证提供者为 AWS IAM Roles Anywhere，请使用以下 `nodeConfig.yaml` 示例。

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

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

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

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

      1. 请将 `PROFILE_ARN` 替换为您在“[准备用于混合节点的凭证](hybrid-nodes-creds.md)”步骤中配置的信任锚的 ARN。

      1. 将 `ROLE_ARN` 替换为混合节点 IAM 角色的 ARN。

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

      1. 请将 `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
         ```

1. 使用您的 `nodeConfig.yaml` 运行 `nodeadm init` 命令，从而将混合节点连接到 Amazon EKS 集群。

   ```
   nodeadm init -c file://nodeConfig.yaml
   ```

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

**重要**  
您的节点将处于 `Not Ready` 状态，此状态符合预期，是因混合节点上缺少正在运行的 CNI 所致。如果节点未加入集群，请参阅[混合节点故障排除](hybrid-nodes-troubleshooting.md)。

## 第 4 步：为混合节点配置 CNI
<a name="_step_4_configure_a_cni_for_hybrid_nodes"></a>

要使混合节点能够随时运行应用程序，请继续完成[为混合节点配置 CNI](hybrid-nodes-cni.md)中的步骤。