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

帮助改进此页面

想为本用户指南做出贡献? 选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

为混合节点配置附加组件

本页介绍通过 Amazon EKS 混合节点功能运行来自 Amazon 的 Amazon EKS 附加组件的注意事项。要详细了解来自 Amazon 的 Amazon EKS 附加组件以及在集群中创建、升级和移除附加组件的过程,请参阅 Amazon EKS 附加组件。除本页中另有说明的外,对于具有混合节点的 Amazon EKS 集群,创建、升级和删除 Amazon EKS 附加组件的过程与使用在 Amazon 云端运行的节点的 Amazon EKS 集群相同。

来自 Amazon 的下列 Amazon EKS 附加组件与 Amazon EKS 混合节点功能兼容。

EKS 附加组件 兼容的附加组件版本

kube-proxy

v1.25.14-eksbuild.2 及更高版本

CoreDNS

v1.9.3-eksbuild.7 及更高版本

Amazon Distro for OpenTelemetry (ADOT)

v0.102.1-eksbuild.2 及更高版本

CloudWatch 可观测性代理

v2.2.1-eksbuild.1 及更高版本

EKS 容器组身份代理

v1.3.3-eksbuild.1 及更高版本

CSI 快照控制器

v8.1.0-eksbuild.1 及更高版本

除上表中的 Amazon EKS 附加组件外,Amazon Managed Service for Prometheus Collector,以及用于应用程序入口(HTTP)和负载均衡(TCP/UDP)的 Amazon 负载均衡器控制器也与混合节点功能兼容。

更新了来自 Amazon 的与 Amazon EKS 混合节点功能不兼容的 Amazon EKS 附加组件,包含一条应用于混合节点的默认 eks.amazonaws.com/compute-type: hybrid 标签的亲和性规则。这会在集群中部署有混合节点时阻止这些附加组件在混合节点上运行。如果集群既有混合节点又有在 Amazon 云端运行的节点,与混合节点功能不兼容的 Amazon EKS 附加组件仍然可以在集群中部署到在 Amazon 云端运行的节点。Amazon VPC CNI 与混合节点功能不兼容,Amazon EKS 混合节点功能支持将 Cilium 和 Calico 作为容器网络接口(CNI)。请参阅为混合节点配置 CNI了解更多信息。

本页的其余内容介绍了与其他 Amazon EKS 计算类型相比,在混合节点上运行来自 Amazon 的兼容 Amazon EKS 附加组件的区别。

kube-proxy 和 CoreDNS

创建 EKS 集群时,Kube-proxy 和 CoreDNS 默认作为非托管式的附加组件安装。这些附加组件可以在集群创建后作为 Amazon EKS 附加组件进行管理。有关在 Amazon EKS 集群中管理 kube-proxy在 Amazon EKS 集群中管理 DNS 的 CoreDNS的详细信息,请参阅 EKS 文档。如果您运行的集群同时具有混合节点以及位于在 Amazon 云中的节点,建议混合节点上至少有一个 CoreDNS 副本,在 Amazon 云中的节点上也至少有一个 CoreDNS 副本。

CloudWatch 可观测性代理附加组件

混合节点不提供节点级别指标,因为 CloudWatch Container Insights 仅在实例元数据服务(IMDS)可用的情况下才能提供节点级别指标。混合节点提供集群、工作负载、容器组和容器级别的指标。

按照使用 Amazon CloudWatch Observability 安装 CloudWatch 代理中描述的步骤安装附加组件后,必须先更新附加组件清单,然后才能在混合节点上成功运行代理。编辑集群上的 amazoncloudwatchagents 资源以添加 RUN_WITH_IRSA 环境变量,如下所示。

kubectl edit amazoncloudwatchagents -n amazon-cloudwatch cloudwatch-agent
apiVersion: v1 items: - apiVersion: cloudwatch.aws.amazon.com/v1alpha1 kind: AmazonCloudWatchAgent metadata: ... name: cloudwatch-agent namespace: amazon-cloudwatch ... spec: ... env: - name: RUN_WITH_IRSA # <-- Add this value: "True" # <-- Add this - name: K8S_NODE_NAME valueFrom: fieldRef: fieldPath: spec.nodeName ...

适用于混合节点的 Amazon Managed Prometheus 托管式收集器

Amazon Managed Service for Prometheus(AMP)托管式收集器由一个抓取程序组成,用于发现和收集 Amazon EKS 集群中资源的指标。AMP 负责为您管理抓取程序,无需您自行管理任何实例、代理或抓取程序。

您可以在不提供任何混合节点特定附加配置的情况下使用 AMP 托管式收集器。不过对于混合节点上的应用程序,指标端点必须可以从 VPC 访问,包括从 VPC 到远程容器组网络 CIDR 的路由以及本地防火墙中打开的端口。此外,集群必须具有私有集群端点访问权限

按照《Amazon Managed Service for Prometheus 用户指南》中 Using an Amazon managed collector 部分说明的步骤进行操作。

Amazon Distro for OpenTelemetry(ADOT)附加组件

您可以使用 Amazon Distro for OpenTelemetry(ADOT)Amazon EKS 附加组件,来收集在混合节点上运行的应用程序的指标、日志和跟踪数据。注意,ADOT 使用准入 Webhook 来更改和验证收集器自定义资源请求,并且在创建 Amazon EKS 集群时,您必须配置远程容器组网络。

按照《Amazon Distro for OpenTelemetry》文档中 Getting Started with Amazon Distro for OpenTelemetry using EKS Add-Ons 部分说明的步骤进行操作。

Amazon Load Balancer Controller

对于通过 Amazon Direct Connect 或 Amazon Site-to-Site VPN 连接的混合节点上的工作负载,您可以将 Amazon 负载均衡器控制器和应用程序负载均衡器(ALB)或网络负载均衡器(NLB)与目标类型 ip 结合使用。由于 Amazon 负载均衡器控制器使用 Webhook,因此在创建 Amazon EKS 集群时,您必须配置远程容器组网络。

要安装 Amazon 负载均衡器控制器,请按照使用 Helm 安装 Amazon Load Balancer Controller。使用清单安装 Amazon Load Balancer Controller部分说明的步骤操作。

对于使用 ALB 的 Ingress,您必须指定下面的注释。有关说明,请参阅使用 Application Load Balancers 路由应用程序和 HTTP 流量

alb.ingress.kubernetes.io/scheme: internal alb.ingress.kubernetes.io/target-type: ip

对于使用 NLB 的负载均衡,您必须指定下面的注释。有关说明,请参阅使用 Network Load Balancers 路由 TCP 和 UDP 流量

service.beta.kubernetes.io/aws-load-balancer-type: "external" service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: "ip"

EKS 容器组身份代理附加组件

原始 Amazon EKS 容器组身份代理 DaemonSet 仅在节点上的 EC2 IMDS 可用时才能获取必需的 Amazon 凭证。由于 IMDS 在混合节点上不可用,因此从附加组件版本 1.3.3-eksbuild.1 开始,容器组身份代理附加组件可以选择部署特别以混合节点为目标的第二个 DaemonSet。此 DaemonSet 会将必需的凭证附加到容器组身份代理附加组件创建的容器组中。

  1. 要在混合节点上使用容器组身份代理,请按如下所示,在 nodeadm 配置的混合部分设置 enableCredentialsFile: true

    apiVersion: node.eks.aws/v1alpha1 kind: NodeConfig spec: hybrid: enableCredentialsFile: true # <-- Add this

    这将配置 nodeadm 以创建一个将在 /eks-hybrid/.aws/credentials 下的节点上配置的凭证文件,以供 eks-pod-identity-agent 容器组使用。此凭证文件包含将会定期刷新的临时 Amazon 凭证。

  2. 每个节点上更新 nodeadm 配置后,使用您的 nodeConfig.yaml 运行以下 nodeadm init 命令,从而将混合节点加入 Amazon EKS 集群。如果节点之前已经加入集群,仍可再次运行 init 命令。

    nodeadm init -c file://nodeConfig.yaml
  3. 使用 Amazon CLI 或 Amazon Web Services Management Console安装 eks-pod-identity-agent 并启用混合节点支持。

    1. Amazon CLI:在您用于管理集群的计算机上,运行以下命令安装 eks-pod-identity-agent 并启用混合节点支持。

      aws eks create-addon \ --cluster-name cluster-name \ --addon-name eks-pod-identity-agent \ --configuration-values '{"daemonsets":{"hybrid":{"create": true}}}'
    2. Amazon Web Services Management Console:如果您要通过 Amazon 控制台安装容器组身份代理插件,请在可选配置中添加以下内容,以部署将混合节点作为目标的进程守护程序集。

      {"daemonsets":{"hybrid":{"create": true}}}

CSI 快照控制器附加组件

从版本 v8.1.0-eksbuild.2 起,CSI 快照控制器附加组件执行针对混合节点的软反亲和性规则,偏向让控制器 deployment 在与 Amazon EKS 控制面板相同的 Amazon 区域中的 EC2 上运行。将 deployment 与 Amazon EKS 控制面板托管在同一 Amazon 区域有助于减少延迟。