Amazon EKS 附加组件
附加组件是为 Kubernetes 应用程序提供辅助操作功能的软件,但并不特定于应用程序。这包括可观测性代理或 Kubernetes 驱动程序等软件,这些软件允许集群与用于联网、计算和存储的底层 Amazon 资源进行交互。附加组件软件通常由 Kubernetes 社区、Amazon 等云提供商或第三方供应商构建和维护。Amazon EKS 会自动为每个集群安装自我管理的附加组件,例如 Amazon VPC CNI plugin for Kubernetes、kube-proxy 和 CoreDNS。您可以更改附加组件的默认配置并在需要时加以更新。
Amazon EKS 附加组件为 Amazon EKS 集群的一组经策管附加组件提供安装和管理。Amazon EKS 附加组件包含最新的安全补丁、错误修复,并经 Amazon 验证能够与 Amazon EKS 一起使用。Amazon EKS 附加组件允许您始终如一地确保您的 Amazon EKS 集群安全稳定,并减少您在安装、配置和更新上所需执行的工作量。如果是类似于 kube-proxy 的自我管理附加组件,若已在您的集群上运行并且可作为 Amazon EKS 附加组件使用,那么您便可以安装 kube-proxy Amazon EKS 加载项开始享受 Amazon EKS 附加组件的功能所带来的益处。
您可以通过 Amazon EKS API 为 Amazon EKS 附加组件更新特定的 Amazon EKS 托管配置字段。在附加组件启动后,您还可以直接在 Kubernetes 集群中修改并非由 Amazon EKS 管理的配置字段,包括在适用时为附加组件定义特定的配置字段。Amazon EKS 不会覆盖您所做的这些更改。使用 Kubernetes 服务器端应用功能可以实现这一点。有关更多信息,请参阅 Kubernetes 字段管理。
您可以将 Amazon EKS 附加组件与任何 Amazon EKS 节点类型配合使用。
注意事项
-
要为集群配置附加组件,您的 IAM 主体必须具有 IAM 权限,以使用附加组件。如需了解更多信息,请参阅 Amazon Elastic Kubernetes Service 定义的操作 中的名称中带有
Addon的操作。 -
Amazon EKS 附加组件能在您为集群预置或配置的节点上运行。节点类型包括 Amazon EC2 实例和 Fargate。
-
您可以修改并非由 Amazon EKS 管理的字段以自定义 Amazon EKS 附加组件的安装。有关更多信息,请参阅 Kubernetes 字段管理。
-
如果您使用 Amazon Web Services Management Console 创建集群,则 Amazon EKS
kube-proxy、Amazon VPC CNI plugin for Kubernetes 和 CoreDNS Amazon EKS 附加组件会自动添加到您的集群中。如果您借助eksctl使用config文件创建集群,则eksctl还可以使用 Amazon EKS 附加组件创建集群。如果使用不带有config文件的eksctl或使用任何其他工具创建集群,则自我管理的kube-proxy、Amazon VPC CNI plugin for Kubernetes 和 CoreDNS 附加组件将会安装,而不会安装 Amazon EKS 附加组件。您可以自行管理,也可以在集群创建后手动添加 Amazon EKS 附加组件。 -
eks:addon-cluster-adminClusterRoleBinding将cluster-adminClusterRole绑定到eks:addon-managerKubernetes 身份。该角色拥有eks:addon-manager身份所需的权限,可以创建 Kubernetes 命名空间并将附加组件安装到命名空间中。如果删除eks:addon-cluster-adminClusterRoleBinding,Amazon EKS 集群将继续运行,但是 Amazon EKS 将无法再管理任何附加组件。以下平台版本开头的所有集群都使用新的ClusterRoleBinding。Kubernetes 版本 EKS 平台版本 1.20 eks.12 1.21 eks.15 1.22 eks.10 1.23 eks.6 1.24 eks.4 1.25 eks.1
您可以使用 Amazon EKS API、Amazon Web Services Management Console、Amazon CLI 和 eksctl 添加、更新或删除 Amazon EKS 附加组件。有关更多信息,请参阅管理 Amazon EKS 附加组件。您也可以使用 Amazon CloudFormation 创建 Amazon EKS 附加组件。
Amazon EKS 提供的可用 Amazon EKS 附加组件
可在您的集群上创建以下 Amazon EKS 附加组件。您可以随时使用 eksctl、Amazon Web Services Management Console 或 Amazon CLI 查看可用附加组件的最新列表。要查看所有可用附加组件或安装附加组件,请参阅 创建附加组件。如果附加组件需要 IAM 权限,则集群必须具有 IAM OpenID Connect(OIDC)提供商。要确定是否具有一个提供商,还是创建一个提供商,请参阅为集群创建 IAM OIDC 提供商。安装附加组件后,您可以对其进行更新或删除。
选择一个附加组件以了解有关该附加组件及其安装要求的更多信息。
-
名称 –
vpc-cni -
描述 – 为集群提供本机 VPC 联网的 Kubernetes 容器网络接口(CNI)插件
。默认情况下,在每个 Amazon EC2 节点上安装自行管理的或托管类型的附加组件。 -
所需的 IAM 权限 – 此附加组件使用 Amazon EKS 的 服务账户的 IAM 角色 功能。如果集群使用
IPv4系列,则需要 AmazonEKS_CNI_Policy 中的权限。如果集群使用IPv6系列,则必须使用 IPv6 模式中的权限创建 IAM policy。您可以创建 IAM 角色,将其中一个策略附加到该角色,并使用以下命令为附加组件使用的 Kubernetes 服务账户添加注释。 将
my-cluster替换为集群名称,并将AmazonEKSVPCCNIRole替换为角色名称。如果集群使用IPv6系列,则将AmazonEKS_CNI_Policy替换为您创建的策略名称。此命令要求您为您的设备安装eksctl。如果您需要使用其他工具来创建角色、将策略附加到该角色并为 Kubernetes 服务账户添加注释,请参阅 配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name aws-node --namespace kube-system --clustermy-cluster--role-name "AmazonEKSVPCCNIRole" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy--approve -
其他信息 – 要了解有关附加组件可配置设置的更多信息,请参阅 GitHub 上的 aws-vpc-cni-k8s
。要了解有关插件的更多信息,请参阅提议:通过 Amazon VPC 进行 Kubernetes 联网的 CNI 插件 。有关如何创建附加组件的更多信息,请参阅创建 Amazon EKS 附加组件。 -
更新信息 – 您一次只能更新一个次要版本。例如,如果当前版本为
1.23.,并且您想要更新到x-eksbuild.y1.25.,则必须首先更新到x-eksbuild.y1.24.,再更新到x-eksbuild.y1.25.。有关更新附加组件的更多信息,请参阅更新 Amazon EKS 附加组件。x-eksbuild.y
-
名称 –
coredns -
描述 – 一个灵活、可扩展的 DNS 服务器,可用作 Kubernetes 集群 DNS。默认情况下,创建集群时会安装自行管理或托管类型的附加组件。当您启动具有至少一个节点的 Amazon EKS 集群时,无论集群中部署的节点数量如何,预设情况下都会部署 CoreDNS 镜像的两个副本。这些 CoreDNS pods 为集群中的所有 pods 提供名称解析。如果集群包含命名空间与 CoreDNS
deployment的命名空间相匹配的 Amazon Fargate 配置文件,则可以将 CoreDNS pods 部署到 Fargate 节点。 -
所需的 IAM 权限 – 此附加组件不需要任何权限。
-
其他信息 – 要了解有关 CoreDNS 的更多信息,请参阅 Kubernetes 文档中的 Using CoreDNS for Service Discovery
(使用 CoreDNS 进行服务发现)和 Customizing DNS Service (自定义 DNS 服务)。
-
名称 –
kube-proxy -
描述 – 维护每个 Amazon EC2 节点上的网络规则。它可以实现与容器组(pod)的网络通信。默认情况下,在集群中的每个 Amazon EC2 节点上安装自行管理或托管类型的附加组件。
-
所需的 IAM 权限 – 此附加组件不需要任何权限。
-
其他信息 – 要了解有关
kube-proxy的更多信息,请参阅 Kubernetes 文档中的kube-proxy。 -
更新信息 – 在更新当前版本之前,请考虑以下要求:
-
Amazon EKS 集群上的
Kube-proxy具有与 Kubernetes 相同的兼容性和偏斜策略。 -
Kube-proxy必须与您的Amazon EC2 节点上的kubelet具有相同的次要版本。 -
Kube-proxy不能高于集群控制面板的次要版本。 -
Amazon EC2 节点上的
kube-proxy版本不能比控制面板的版本低两个以上的次要版本。例如,如果您的控制面板正在运行 Kubernetes 1.25,kube-proxy次要版本不能低于 1.23。 -
如果您最近将集群更新到新的 Kubernetes 次要版本,请先将 Amazon EC2 节点更新到相同的次要版本,然后再将
kube-proxy更新到与节点相同的次要版本。
-
-
名称 –
aws-ebs-csi-driver -
描述 – 为集群提供 Amazon EBS 存储的 Kubernetes Container Storage Interface(CSI)插件。
-
所需的 IAM 权限 – 此附加组件使用 Amazon EKS 的 服务账户的 IAM 角色 功能。您必须使用 GitHub 示例策略中的权限创建 IAM policy
。您可以创建 IAM 角色,将其中一个策略附加到该角色,并使用以下命令为附加组件使用的 Kubernetes 服务账户添加注释。将 my-cluster替换为集群名称,将AmazonEKS_EBS_CSI_DriverRole替换为角色名称,并将AmazonEBSCSIDriverPolicy替换为您创建的策略名称。此命令要求您为您的设备安装eksctl。如果您需要使用其他工具来创建角色、将策略附加到该角色并为 Kubernetes 服务账户添加注释,请参阅 配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name ebs-csi-controller-sa --namespace kube-system --clustermy-cluster\ --role-name "AmazonEKS_EBS_CSI_DriverRole" --role-only --attach-policy-arn arn:aws:iam::aws:policy/AmazonEBSCSIDriverPolicy--approve -
其他信息 – 要了解有关驱动程序的更多信息,请参阅 GitHub 上的 Amazon EBS CSI driver
(Amazon EBS CSI 驱动程序)。您可以从 GitHub 部署用于测试目的的示例 。
-
名称 –
adot -
描述 – Amazon Distro for OpenTelemetry
(ADOT)是 OpenTelemetry 项目的安全、受 Amazon 支持的生产就绪型发行版。 -
所需的 IAM 权限 – 此附加组件使用 Amazon EKS 的 服务账户的 IAM 角色 功能。AmazonPrometheusRemoteWriteAccess、AWSXrayWriteOnlyAccess
和 CloudWatchAgentServerPolicy Amazon 托管策略中的权限。您可以创建 IAM 角色,将托管策略附加到该角色,并使用以下命令为附加组件使用的 Kubernetes 服务账户添加注释。将 my-cluster替换为集群名称,并将AmazonEKS_ADOT_Collector_Role替换为角色名称。此命令要求您为您的设备安装eksctl。如果您需要使用其他工具来创建角色、将策略附加到该角色并为 Kubernetes 服务账户添加注释,请参阅 配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name adot-collector --namespace default --clustermy-cluster--role-name "AmazonEKS_ADOT_Collector_Role" \ --attach-policy-arn arn:aws:iam::aws:policy/AmazonPrometheusRemoteWriteAccess \ --attach-policy-arn arn:aws:iam::aws:policy/AWSXrayWriteOnlyAccess \ --attach-policy-arn arn:aws:iam::aws:policy/CloudWatchAgentServerPolicy --approve -
其他信息 – 有关更多信息,请参阅 Amazon Distro for OpenTelemetry 文档中的通过 EKS 附加组件开始使用 Amazon Distro for OpenTelemetry
。