

 **帮助改进此页面** 

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

# 在现有 Amazon EKS 集群上启用混合节点或修改配置
<a name="hybrid-nodes-cluster-update"></a>

本主题概述了添加、更改或移除 Amazon EKS 集群的混合节点配置时可用的选项，并介绍了相关注意事项。

要让 Amazon EKS 集群能够使用混合节点，请在 `RemoteNetworkConfig` 配置中添加本地节点的 IP 地址 CIDR 范围以及可选的容器组（pod）网络。EKS 使用此 CIDR 列表来实现集群与本地网络之间的连接。有关更新集群配置时选项的完整列表，请参阅《Amazon EKS API Reference**》中的 [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)。

您可以对集群中的 EKS 混合节点网络配置执行以下任一操作：
+  [添加远程网络配置，以在现有集群中启用 EKS 混合节点。](#hybrid-nodes-cluster-enable-existing)
+  [在现有集群中添加、更改或移除远程节点网络或远程容器组（pod）网络。](#hybrid-nodes-cluster-update-config)
+  [移除所有远程节点网络 CIDR 范围，以在现有集群中禁用 EKS 混合节点。](#hybrid-nodes-cluster-disable)

## 先决条件
<a name="hybrid-nodes-cluster-enable-prep"></a>
+ 在为混合节点启用 Amazon EKS 集群之前，请确保您的环境满足 [混合节点的先决条件设置](hybrid-nodes-prereqs.md) 中概述的要求以及 [准备混合节点的联网](hybrid-nodes-networking.md)、[为混合节点准备操作系统](hybrid-nodes-os.md) 和 [准备用于混合节点的凭证](hybrid-nodes-creds.md) 中详细介绍的要求。
+ 集群必须使用 IPv4 地址系列。
+ 集群的集群身份验证模式必须为 `API` 或 `API_AND_CONFIG_MAP`。[更改身份验证模式以使用访问条目](setting-up-access-entries.md) 中介绍了修改集群身份验证模式的流程。
+ 我们建议为 Amazon EKS Kubernetes API 服务器端点使用公有或私有端点访问权限，但不要同时启用这两者。如果您选择“公有和私有”，Amazon EKS Kubernetes API 服务器端点将始终解析为在您的 VPC 之外运行的混合节点公有 IP，这可能会阻止您的混合节点加入集群。[集群 API 服务器端点](cluster-endpoint.md) 中介绍了修改集群网络访问权限的流程。
+ 已在您的设备上安装并配置了最新版本的 AWS 命令行界面（AWS CLI）。要查看当前版本，请使用 `aws --version`。yum、apt-get 或适用于 macOS 的 Homebrew 等软件包管理器通常比 AWS CLI 的最新版本落后几个版本。要安装最新版本，请参阅《AWS 命令行界面用户指南》中的[安装或更新到最新版本的 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) 和[配置 AWS CLI 设置](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config)。
+ 有权限在您的 Amazon EKS 集群上调用 [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html) 的 [IAM 主体](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles#iam-term-principal)。
+ 将附加组件更新到兼容混合节点的版本。有关兼容混合节点功能的附加组件版本，请参阅[为混合节点配置附加组件](hybrid-nodes-add-ons.md)。
+ 如果您正在运行与混合节点不兼容的附加组件，请确保附加组件 [DaemonSet](https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/) 或 [Deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) 具有以下亲和性规则来防止部署到混合节点。如果以下亲和性规则尚不存在，请添加该规则。

  ```
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: eks.amazonaws.com/compute-type
            operator: NotIn
            values:
            - hybrid
  ```

## 注意事项
<a name="hybrid-nodes-cluster-enable-consider"></a>

`remoteNetworkConfig` JSON 对象在更新期间具有以下行为：
+ 您未指定的任何现有配置部分均保持不变。如果您未指定 `remoteNodeNetworks` 或 `remotePodNetworks` 中的任何一个，则该部分将保持不变。
+ 如果要修改 CIDR 的 `remoteNodeNetworks` 或 `remotePodNetworks` 列表，则必须在最终配置中指定所需的 CIDR 的完整列表。如果您指定了对 `remoteNodeNetworks` 或 `remotePodNetworks` CIDR 列表的更改，EKS 将在更新期间替换原始列表。
+ 本地节点和容器组 CIDR 块必须满足以下要求：

  1. 位于 IPv4 RFC–1918 范围之一：10.0.0.0/8、172.16.0.0/12 或 192.168.0.0/16，或者在 RFC 6598 定义的 CGNAT 范围内：`100.64.0.0/10`

  1. 不相互重叠，也不与 Amazon EKS 集群的所有 VPC CIDR 或 Kubernetes 服务 IPv4 CIDR 重叠。

## 在现有集群上启用混合节点
<a name="hybrid-nodes-cluster-enable-existing"></a>

您可以使用以下方法在现有集群中启用 EKS 混合节点：
+  [AWS CloudFormation](#hybrid-nodes-cluster-enable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-enable-cli) 
+  [AWS 管理控制台](#hybrid-nodes-cluster-enable-console) 

### 在现有集群中启用 EKS 混合节点 – AWS CloudFormation
<a name="hybrid-nodes-cluster-enable-cfn"></a>

1. 要在集群中启用 EKS 混合节点，请将 `RemoteNodeNetwork` 和（可选）`RemotePodNetwork` 添加到您的 CloudFormation 模板并更新堆栈。请注意，`RemoteNodeNetwork` 列表最多包含一个 `Cidrs` 项目，而 `Cidrs` 列表可包含多个 IP CIDR 范围。

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [RemoteNodeCIDR]
     RemotePodNetworks:
       - Cidrs: [RemotePodCIDR]
   ```

1. 继续[准备混合节点的集群访问权限](hybrid-nodes-cluster-prep.md)。

### 在现有集群中启用 EKS 混合节点 – AWS CLI
<a name="hybrid-nodes-cluster-enable-cli"></a>

1. 运行以下命令，为 EKS 集群启用 EKS 混合节点的 `RemoteNetworkConfig`。在运行此命令之前，请将以下参数替换为相应的设置。有关设置的完整列表，请参阅《Amazon EKS API Reference》**中的 [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)。

   1.  `CLUSTER_NAME`：要更新的 EKS 集群的名称。

   1.  `AWS_REGION`：EKS 集群正在运行的 AWS 区域。

   1.  `REMOTE_NODE_CIDRS`：混合节点的本地节点 CIDR。

   1.  `REMOTE_POD_CIDRS`（可选）：在混合节点上运行的工作负载的本地容器组 CIDR。

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["REMOTE_POD_CIDRS"]}]}'
      ```

1. 更新集群需要几分钟时间。可使用以下命令查询集群的状态。请将 `CLUSTER_NAME` 替换为要修改的集群的名称，并将 `AWS_REGION` 替换为运行集群的 AWS 区域。在返回的输出为 `ACTIVE` 之前，请勿继续执行下一步。

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

1. 继续[准备混合节点的集群访问权限](hybrid-nodes-cluster-prep.md)。

### 在现有集群中启用 EKS 混合节点 – AWS 管理控制台
<a name="hybrid-nodes-cluster-enable-console"></a>

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 选择集群的名称可以显示集群信息。

1. 选择**联网**选项卡，然后选择**更新**。

1. 在下拉列表中，选择**远程网络**。

1.  选择**配置远程网络以启用混合节点**，并为混合节点指定本地节点和容器组 CIDR。

1. 选择 **Save changes（保存更改）**以完成操作。等待集群状态恢复为**活动**。

1. 继续[准备混合节点的集群访问权限](hybrid-nodes-cluster-prep.md)。

## 更新现有集群中的混合节点配置
<a name="hybrid-nodes-cluster-update-config"></a>

您可以使用以下任何一种方法修改现有混合集群中的 `remoteNetworkConfig`：
+  [AWS CloudFormation](#hybrid-nodes-cluster-update-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-update-cli) 
+  [AWS 管理控制台](#hybrid-nodes-cluster-update-console) 

### 更新现有集群中的混合配置 – AWS CloudFormation
<a name="hybrid-nodes-cluster-update-cfn"></a>

1. 使用新的网络 CIDR 值更新您的 CloudFormation 模板。

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks:
       - Cidrs: [NEW_REMOTE_NODE_CIDRS]
     RemotePodNetworks:
       - Cidrs: [NEW_REMOTE_POD_CIDRS]
   ```
**注意**  
更新 `RemoteNodeNetworks` 或 `RemotePodNetworks` CIDR 列表时，请包含全部 CIDR（新的和现有的）。更新期间，EKS 会替换整个列表。在更新请求中省略这些字段会保留其现有配置。

1. 使用修改后的模板更新您的 CloudFormation 堆栈，然后等待堆栈更新完成。

### 更新现有集群中的混合配置 – AWS CLI
<a name="hybrid-nodes-cluster-update-cli"></a>

1. 要修改远程网络 CIDR，请运行以下命令。将这些值替换为相应的设置：

   ```
   aws eks update-cluster-config
   --name CLUSTER_NAME
   --region AWS_REGION
   --remote-network-config '{"remoteNodeNetworks":[{"cidrs":["NEW_REMOTE_NODE_CIDRS"]}],"remotePodNetworks":[{"cidrs":["NEW_REMOTE_POD_CIDRS"]}]}'
   ```
**注意**  
更新 `remoteNodeNetworks` 或 `remotePodNetworks` CIDR 列表时，请包含全部 CIDR（新的和现有的）。更新期间，EKS 会替换整个列表。在更新请求中省略这些字段会保留其现有配置。

1. 等待集群状态恢复为“ACTIVE”，然后再继续。

### 更新现有集群中的混合配置 – AWS 管理控制台
<a name="hybrid-nodes-cluster-update-console"></a>

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 选择集群的名称可以显示集群信息。

1. 选择**联网**选项卡，然后选择**更新**。

1. 在下拉列表中，选择**远程网络**。

1. 根据需要更新 `Remote node networks` 和 `Remote pod networks - Optional` 下方的 CIDR。

1. 选择**保存更改**，然后等待集群状态恢复为**活动**。

## 在现有集群中禁用混合节点
<a name="hybrid-nodes-cluster-disable"></a>

您可以使用以下方法在现有集群中禁用 EKS 混合节点：
+  [AWS CloudFormation](#hybrid-nodes-cluster-disable-cfn) 
+  [AWS CLI](#hybrid-nodes-cluster-disable-cli) 
+  [AWS 管理控制台](#hybrid-nodes-cluster-disable-console) 

### 在现有集群中禁用 EKS 混合节点 – AWS CloudFormation
<a name="hybrid-nodes-cluster-disable-cfn"></a>

1. 要在集群中禁用 EKS 混合节点，请在 CloudFormation 模板中将 `RemoteNodeNetworks` 和 `RemotePodNetworks` 设置为空数组，然后更新堆栈。

   ```
   RemoteNetworkConfig:
     RemoteNodeNetworks: []
     RemotePodNetworks: []
   ```

### 在现有集群中禁用 EKS 混合节点 – AWS CLI
<a name="hybrid-nodes-cluster-disable-cli"></a>

1. 运行以下命令，从 EKS 集群中移除 `RemoteNetworkConfig`。在运行此命令之前，请将以下参数替换为相应的设置。有关设置的完整列表，请参阅《Amazon EKS API Reference》**中的 [UpdateClusterConfig](https://docs.aws.amazon.com/eks/latest/APIReference/API_UpdateClusterConfig.html)。

   1.  `CLUSTER_NAME`：要更新的 EKS 集群的名称。

   1.  `AWS_REGION`：EKS 集群正在运行的 AWS 区域。

      ```
      aws eks update-cluster-config \
          --name CLUSTER_NAME \
          --region AWS_REGION \
          --remote-network-config '{"remoteNodeNetworks":[],"remotePodNetworks":[]}'
      ```

1. 更新集群需要几分钟时间。可使用以下命令查询集群的状态。请将 `CLUSTER_NAME` 替换为要修改的集群的名称，并将 `AWS_REGION` 替换为运行集群的 AWS 区域。在返回的输出为 `ACTIVE` 之前，请勿继续执行下一步。

   ```
   aws eks describe-cluster \
       --name CLUSTER_NAME \
       --region AWS_REGION \
       --query "cluster.status"
   ```

### 在现有集群中禁用 EKS 混合节点 – AWS 管理控制台
<a name="hybrid-nodes-cluster-disable-console"></a>

1. 打开 [Amazon EKS 控制台](https://console.aws.amazon.com/eks/home#/clusters)。

1. 选择集群的名称可以显示集群信息。

1. 选择**联网**选项卡，然后选择**更新**。

1. 在下拉列表中，选择**远程网络**。

1. 选择**配置远程网络以启用混合节点**，然后移除 `Remote node networks` 和 `Remote pod networks - Optional` 下的所有 CIDR。

1. 选择 **Save changes（保存更改）**以完成操作。等待集群状态恢复为**活动**。