本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

EKS 集群配置参考

账户访问

使用为您的 IAM 策略获取的信息填写每个下拉框和字段。

设置 说明

区域

从下拉框中选择要构建集群的地理区域。

云凭据

选择为您的 IAM 策略创建的云凭据。有关在 Rancher 中创建云凭据的更多信息,请参阅 此页面

服务角色

选择一个 服务角色

服务角色 说明

标准:Rancher 生成的服务角色

如果选择此角色,Rancher 会自动添加一个用于集群的服务角色。

自定义:从您现有的服务角色中选择

如果选择此角色,Rancher 允许您从已在 AWS 中创建的服务角色中选择。有关在 AWS 中创建自定义服务角色的更多信息,请参见 亚马逊文档

秘密加密

可选:要加密秘密,请选择或输入在 AWS 密钥管理服务 (KMS) 中创建的密钥。

API 服务器端点访问

配置公共/私有 API 访问是一个高级用例。有关详细信息,请参阅 EKS 集群端点访问控制 文档

仅限私有的 API 端点

如果在创建集群时启用私有并禁用公共 API 端点访问,则必须采取额外步骤以便 Rancher 能够成功连接到集群。在这种情况下,将显示一个弹出窗口,其中包含您将在集群上运行的命令,以将其注册到 Rancher。一旦集群被配置,您可以在任何可以连接到集群的 Kubernetes API 的地方运行显示的命令。

有两种方法可以避免这个额外的手动步骤:

  • 您可以在创建集群时同时创建具有私有和公共 API 端点访问的集群。您可以在集群创建并处于活动状态后禁用公共访问,Rancher 将继续与 EKS 集群通信。

  • 您可以确保 Rancher 与 EKS 集群共享一个子网。然后可以使用安全组来启用 Rancher 与集群的 API 端点进行通信。在这种情况下,不需要注册集群的命令,Rancher 将能够与您的集群进行通信。有关配置安全组的更多信息,请参阅 安全组文档

公共访问端点

可选择通过显式 CIDR 块限制对公共端点的访问。

如果您限制对特定 CIDR 块的访问,建议您同时启用私有访问,以避免失去与集群的网络通信。

启用私有访问需要以下之一:

  • Rancher 的 IP 必须是允许的 CIDR 块的一部分

  • 应启用私有访问,Rancher 必须与集群共享一个子网,并且必须能够访问集群,这可以通过安全组进行配置。

有关集群端点的公共和私有访问的更多信息,请参阅 Amazon EKS 文档

IPv6 / 双栈网络

Rancher 支持使用 IPv6 网络路由来配置和管理 Amazon EKS 集群。当启用 IPv6 时,Kubernetes Pod 和服务将被分配 IPv6 地址。然而,底层的 EC2 工作节点以 双栈模式 运行(同时接收 IPv4 和 IPv6 地址)。这种双栈架构确保节点仍然可以通过 IPv4 与 AWS API 和 Kubernetes 控制平面通信,而您的应用程序工作负载则通过 IPv6 进行通信。

要通过 Rancher UI 配置双栈集群:

  1. 在集群创建期间,展开 网络 部分。

  2. IP 家族 下,选择 IPv6 单选按钮。

    更改 IP 家族会清除您在表单中所做的任何当前子网选择。

  3. VPC 和子网 下,选择 自动创建新的 VPC 和子网从现有子网中选择

    自定义 VPC 的警告

    如果您选择从现有子网中选择,您 必须 选择双栈子网。所选子网必须同时具有 IPv4 CIDR 块和 IPv6 CIDR 块。不支持仅 IPv6 的子网。

  4. 完成集群配置的其余部分(节点组等)。

  5. 单击*创建*。

IP 家族设置是 不可变 的。创建 EKS 集群后,您无法将 IPv4 集群转换为 IPv6,也无法将 IPv6 集群转换为 IPv4。

导入现有的 IPv6 集群

Rancher 完全支持注册(导入)在 Rancher 之外配置了 IPv6 网络的现有 Amazon EKS 集群(例如,通过 Terraform 或 AWS 控制台)。

当您注册现有的 EKS 集群时:

  1. 请遵循标准集群注册流程 (集群管理 > 添加集群 > 通用)。

  2. Rancher 查询 AWS EKS API 以读取集群的上游状态。

  3. Rancher 自动检测集群是否使用 IPv6 进行配置。

在配置 IPv6 集群时,适用若干自动化行为和严格要求:

  • *服务 CIDR:*AWS 从固定的 IPv6 范围 (fd00::/108) 自动分配服务 CIDR。您无法自定义 IPv6 集群的服务 CIDR。

  • OIDC 提供者 (IRSA) 要求:*在 IPv6 集群中,Amazon VPC CNI 插件严格要求 IAM 权限,以将 IPv6 前缀分配给弹性网络接口(ENI)。此身份验证通过服务账户的 IAM 角色(IRSA)处理。因此,*IAM OIDC 提供者是强制性的,并由 Rancher 在配置 IPv6 集群时自动启用。没有它,Pod 无法获取 IP 地址。

EKSClusterConfig 参考示例(IPv6)

如果您使用 eksclusterconfigs.eks.cattle.io 自定义资源以编程方式部署 EKS 集群,可以通过将 ipFamily 字段设置为 ipv6 来启用 IPv6。

以下是为 IPv6 配置的最小 EKSClusterConfig 示例。请注意,ipFamily 已设置,标准 IPv4 字段如 serviceCidr 被省略,因为 AWS 在 IPv6 模式下会自动管理它们。

apiVersion: eks.cattle.io/v1
kind: EKSClusterConfig
metadata:
  name: my-ipv6-cluster
  namespace: cluster-fleet-default
spec:
  amazonCredentialSecret: cattle-global-data/my-aws-credentials
  displayName: my-ipv6-cluster
  region: us-west-2
  imported: false
  kubernetesVersion: "1.33"
  ipFamily: "ipv6" # Enables Dual-Stack IPv6 networking. Triggers automatic OIDC creation.
  nodeGroups:
    - nodegroupName: initial-nodegroup
      desiredSize: 2
      maxSize: 3
      minSize: 1
      instanceType: t3.medium
      diskSize: 20
      requestSpotInstances: false
      version: "1.33"
  privateAccess: false
  publicAccess: true
  secretsEncryption: false

子网

选项 说明

标准:Rancher 生成的 VPC 和子网

在配置集群时,Rancher 生成一个带有 3 个公共子网的新 VPC。

自定义:从您现有的 VPC 和子网中选择

在配置集群时,Rancher 将您的控制平面和节点配置为使用您已经 在 AWS 中创建的 VPC 和子网。

有关更多信息,请参阅 AWS 文档中的 集群 VPC 考虑事项。根据您在上一步的选择,遵循以下一组指令。

自定义 VPC 的警告

如果您选择了 IPv6 作为您的 IP 家族并且带来了自定义 VPC,您 必须 选择双栈子网。所选子网必须同时具有 IPv4 CIDR 块和 IPv6 CIDR 块。EKS 不支持“仅 IPv6”子网;EC2 工作节点仍然需要 IPv4 地址才能加入集群并与 AWS 服务通信。

日志记录

配置控制平面日志以发送到 Amazon CloudWatch。您将为从集群发送到 CloudWatch Logs 的任何日志支付标准的 CloudWatch Logs 数据摄取和存储费用。

每种日志类型对应 Kubernetes 控制平面的一个组件。要了解有关这些组件的更多信息,请参见 Kubernetes 组件 中的 Kubernetes 文档。

有关 EKS 控制平面日志记录的更多信息,请参阅官方 文档

托管节点组

Amazon EKS 托管节点组自动化了 Amazon EKS Kubernetes 集群的节点(Amazon EC2 实例)的配置和生命周期管理。

有关节点组如何工作及其配置的更多信息,请参阅 EKS 文档

用户提供的启动模板

您可以提供自己的启动模板 ID 和版本,以配置节点组中的 EC2 实例。如果您提供启动模板,则无法从 Rancher 配置模板设置。您必须在启动模板中设置下面列出的所有必需选项。

此外,如果您提供启动模板,则只能更新模板版本,而不能更新模板 ID。要使用新的模板 ID,请创建一个新的托管节点组。

选项 说明 必需/可选

实例类型

选择您要配置的实例的 硬件规格

必需

镜像 ID

为节点指定自定义 AMI。与 EKS 一起使用的自定义 AMI 必须 正确配置

可选

节点卷大小

启动模板必须指定具有所需大小的 EBS 卷。

必需

SSH 密钥

要添加到实例的密钥,以提供对节点的 SSH 访问。

可选

用户数据

MIME 多部分格式 中的云初始化脚本。

可选

实例资源标签

为节点组中的每个 EC2 实例及其卷打标签。

可选

如果节点组是从自定义启动模板创建的,则无法直接将节点组升级到较新的 Kubernetes 版本。您必须创建一个具有正确 Kubernetes 版本的新启动模板,并将节点组与新模板关联。

Rancher 管理的启动模板

如果您不指定启动模板,则可以在Rancher UI中配置上述选项,并且所有选项都可以在创建后进行更新。为了利用所有这些选项,Rancher将为您创建和管理一个启动模板。Rancher中的每个集群将有一个Rancher管理的启动模板,而每个没有指定启动模板的托管节点组将有一个版本的托管启动模板。此启动模板的名称将以"rancher-managed-lt-"为前缀,后跟集群的显示名称。此外,Rancher管理的启动模板将标记为键"rancher-managed-template",值为"do-not-modify-or-delete",以帮助识别它为Rancher管理。重要的是,这个启动模板及其版本不得被修改、删除或与任何其他集群或托管节点组一起使用。这样做可能会导致您的节点组"降级",并需要被销毁和重新创建。

自定义AMI

如果您指定了自定义AMI,无论是在启动模板中还是在Rancher中,则该镜像必须 正确配置,并且您必须提供用户数据以 启动节点。这被视为高级用例,理解要求是至关重要的。

如果您指定的启动模板不包含自定义AMI,则Amazon将使用 EKS 优化的AMI作为Kubernetes版本和所选区域。您还可以为受益于此的工作负载选择 启用GPU的实例

如果提供了自定义AMI,无论是在下拉菜单中还是在启动模板中,Rancher中的GPU启用实例设置将被忽略。

竞价实例

竞价实例现在 被EKS支持。如果指定了启动模板,Amazon建议该模板不提供实例类型。相反,Amazon建议提供多个实例类型。如果节点组启用了"请求竞价实例"复选框,则您将有机会提供多个实例类型。

在这种情况下,您在实例类型下拉菜单中所做的任何选择将被忽略,您必须在"竞价实例类型"部分指定至少一个实例类型。此外,与EKS一起使用的启动模板不能请求竞价实例。请求竞价实例必须是 EKS 配置的一部分。

节点组设置

以下设置也可以配置。除了“节点组名称”之外,所有这些在节点组创建后都是可编辑的。

选项 说明

节点组名称

节点组的名称。

期望的 ASG 大小

期望的实例数量。

最大 ASG 大小

最大实例数量。此设置在安装 集群自动扩展器 之前不会生效。

最小 ASG 大小

最小实例数量。此设置在安装 集群自动扩展器 之前不会生效。

标签

应用于托管节点组中节点的 Kubernetes 标签。

标签

这些是托管节点组的标签,不会传播到任何关联资源。

自管理的 Amazon Linux 节点

您可以注册包含自管理 Amazon Linux 节点的 EKS 集群。您必须根据官方 AWS 文档中的说明配置此类型的集群,以 启动自管理的 Amazon Linux 节点。包含自管理 Amazon Linux 节点的 EKS 集群通常由 Karpenter 项目操作。在您配置包含自管理 Amazon Linux 节点的 EKS 集群后,注册集群 以便可以由 Rancher 管理。然而,这些节点在 Rancher UI 中不可见。

服务账户的 IAM 角色

在 EKS 集群上运行的应用程序部署可以通过 IAM 权限向 AWS 服务发出请求。这些应用程序必须使用 AWS 凭证对其请求进行签名。服务账户的 IAM 角色通过 AWS OIDC 端点管理这些凭证。您可以将一个 IAM 角色链接到 Kubernetes 服务账户,并配置您的 Pods 使用该账户,而不是将 AWS 凭证分发给容器或依赖 EC2 实例的角色。

在 EKS 集群中,不支持将 IAM 角色链接到 Rancher Pods。

要启用服务账户的 IAM 角色:

刷新间隔的配置

eks-refresh-cron 设置已弃用。它已迁移到 eks-refresh 设置,该设置是表示秒的整数。

默认值为 300 秒。

可以通过运行 kubectl edit setting eks-refresh 来更改刷新间隔。

如果之前设置了 eks-refresh-cron,迁移将自动发生。

刷新间隔越短,发生竞争条件的可能性就越小,但这确实增加了遇到 AWS API 可能存在的请求限制的可能性。