Amazon EKS 附加组件
附加组件是为 Kubernetes 应用程序提供辅助操作功能的软件,但并不特定于应用程序。这包括可观测性代理或 Kubernetes 驱动程序等软件,这些软件允许集群与用于联网、计算和存储的底层 AWS 资源进行交互。附加组件软件通常由 Kubernetes 社区、AWS 等云提供商或第三方供应商构建和维护。Amazon EKS 会自动为每个集群安装自我管理的附加组件,例如 Amazon VPC CNI plugin for Kubernetes、kube-proxy
和 CoreDNS。您可以更改附加组件的默认配置并在需要时加以更新。
Amazon EKS 附加组件为 Amazon EKS 集群的一组经策管附加组件提供安装和管理。Amazon EKS 附加组件包含最新的安全补丁、错误修复,并经 AWS 验证能够与 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 字段管理。
-
如果您使用 AWS 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-admin
ClusterRoleBinding
将cluster-admin
ClusterRole
绑定到eks:addon-manager
身份。该角色拥有eks:addon-manager
身份所需的权限,可以创建 Kubernetes 命名空间并将附加组件安装到命名空间中。如果删除eks:addon-cluster-admin
ClusterRoleBinding
,Amazon EKS 集群将继续运行,但是 Amazon EKS 将无法再管理任何附加组件。以下平台版本开头的所有集群都使用新的ClusterRoleBinding
。Kubernetes 版本 EKS 平台版本 1.20 eks.12 1.21 eks.14 1.22 eks.9 1.23 eks.5 1.24 eks.3
您可以使用 Amazon EKS API、AWS Management Console、AWS CLI 和 eksctl
添加、更新或删除 Amazon EKS 附加组件。有关更多信息,请参阅管理 Amazon EKS 附加组件。您也可以使用 AWS CloudFormation 创建 Amazon EKS 附加组件。
Amazon EKS 提供的可用 Amazon EKS 附加组件
可在您的集群上创建以下 Amazon EKS 附加组件。您可以随时使用 eksctl
、AWS Management Console 或 AWS 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 --cluster
my-cluster
--role-name "AmazonEKSVPCCNIRole
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/AmazonEKS_CNI_Policy
--approve -
其他信息 – 要了解有关附加组件可配置设置的更多信息,请参阅 GitHub 上的 aws-vpc-cni-k8s
。要了解有关插件的更多信息,请参阅 Proposal: CNI plugin for Kubernetes networking over AWS VPC (提议:通过 AWS VPC 进行 Kubernetes 联网的 CNI 插件)。 -
更新信息 – 您一次只能更新一个次要版本。例如,如果当前版本为
1.22.
,并且您想要更新到x
-eksbuild.y
1.24.
,则必须首先更新到x
-eksbuild.y
1.23.
,再更新到x
-eksbuild.y
1.24.
。x
-eksbuild.y
-
名称 –
coredns
-
描述 – 一个灵活、可扩展的 DNS 服务器,可用作 Kubernetes 集群 DNS。默认情况下,创建集群时会安装自行管理或托管类型的附加组件。当您启动具有至少一个节点的 Amazon EKS 集群时,无论集群中部署的节点数量如何,预设情况下都会部署 CoreDNS 镜像的两个副本。这些 CoreDNS pods 为集群中的所有 pods 提供名称解析。如果集群包含命名空间与 CoreDNS
deployment
的命名空间相匹配的 AWS 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.24,kube-proxy
次要版本不能低于 1.22。 -
如果您最近将集群更新到新的 Kubernetes 次要版本,请先将 Amazon EC2 节点更新到相同的次要版本,然后再将
kube-proxy
更新到与节点相同的次要版本。
-
-
名称 –
aws-ebs-csi-driver
-
描述 – 为集群提供本机 VPC 联网的 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 --cluster
my-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
-
描述 – AWS Distro for OpenTelemetry
(ADOT)是 OpenTelemetry 项目的安全、受 AWS 支持的生产就绪型发行版。 -
所需的 IAM 权限 – 此附加组件使用 Amazon EKS 的 服务账户的 IAM 角色 功能。AmazonPrometheusRemoteWriteAccess
、AWSXrayWriteOnlyAccess 和 CloudWatchAgentServerPolicy AWS 托管策略中的权限。您可以创建 IAM 角色,将托管策略附加到该角色,并使用以下命令为附加组件使用的 Kubernetes 服务账户添加注释。将 my-cluster
替换为集群名称,并将AmazonEKS_ADOT_Collector_Role
替换为角色名称。此命令要求您为您的设备安装eksctl
。如果您需要使用其他工具来创建角色、将策略附加到该角色并为 Kubernetes 服务账户添加注释,请参阅 配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name adot-collector --namespace default --cluster
my-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 -
其他信息 – 有关更多信息,请参阅 AWS Distro for OpenTelemetry 文档中的 Getting Started with AWS Distro for OpenTelemetry using EKS Add-Ons
(通过 EKS 附加组件开始使用 AWS Distro for OpenTelemetry)。
来自独立软件供应商的其他 Amazon EKS 附加组件
除了之前的 Amazon EKS 附加组件列表外,您还可以添加来自独立软件供应商的各种操作软件 Amazon EKS 附加组件。选择一个附加组件以了解有关该附加组件及其安装要求的更多信息。
-
发布者:Dynatrace
-
名称 –
dynatrace_dynatrace-operator
-
版本:
v0.8.2-eksbuild.0
-
命名空间:
dynatrace
-
服务账户名称:此附加组件未使用服务账户。
-
AWS 托管 IAM policy:此附加组件不使用托管策略。
-
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 dynatrace 文档中的 Kubernetes monitoring
(Kubernetes 监控)。
-
发布者:Factorhouse
-
名称 –
factorhouse_kpow
-
版本:
v90.2.3-eksbuild.0
-
命名空间:
factorhouse
-
服务账户名称:
kpow
-
AWS 托管 IAM policy:AWSLicenseManagerConsumptionPolicy
-
创建所需 IAM 角色的命令:以下命令要求您的集群具有 IAM OpenID Connect(OIDC)提供商。要确定是否具有一个提供商,还是创建一个提供商,请参阅为集群创建 IAM OIDC 提供商。将
my-cluster
替换为您的集群的名称,并将my-kpow-role
替换为您的角色名称。此命令要求您为您的设备安装eksctl
。如果您需要使用其他工具来创建角色并为 Kubernetes 服务账户添加注释,请参阅配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name kpow --namespace factorhouse --cluster
my-cluster
--role-name "my-kpow-role
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/service-role/AWSLicenseManagerConsumptionPolicy --approve -
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Kpow 文档中的 AWS Marketplace LM
。
-
发布者:Kubecost
-
名称 –
kubecost_kubecost
-
版本:
v1.98.0-eksbuild.1
-
命名空间:
kubecost
-
服务账户名称:此附加组件未使用服务账户。
-
AWS 托管 IAM policy:此附加组件不使用托管策略。
-
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Kubecost 文档中的 Amazon EKS integration
(Amazon EKS 集成)。 -
如果您的集群是
1.23
版或更高版本,您必须在集群上安装 Amazon EBS CSI 驱动程序,否则您将收到错误信息。
-
发布者:Nirmata
-
名称 –
nirmata_kyverno
-
版本:
v1.8.1-eksbuild.0
-
命名空间:
kyverno
-
服务账户名称:
kyverno
-
AWS 托管 IAM policy:AWSLicenseManagerConsumptionPolicy
-
创建所需 IAM 角色的命令:以下命令要求您的集群具有 IAM OpenID Connect(OIDC)提供商。要确定是否具有一个提供商,还是创建一个提供商,请参阅为集群创建 IAM OIDC 提供商。将
my-cluster
替换为您的集群的名称,并将my-kyverno-role
替换为您的角色名称。此命令要求您为您的设备安装eksctl
。如果您需要使用其他工具来创建角色并为 Kubernetes 服务账户添加注释,请参阅配置 Kubernetes 服务账户以代入 IAM 角色。eksctl create iamserviceaccount --name kyverno --namespace kyverno --cluster
my-cluster
--role-name "my-kyverno-role
" \ --role-only --attach-policy-arn arn:aws:iam::aws:policy/service-role/AWSLicenseManagerConsumptionPolicy --approve -
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Nirmata 文档中的 Nirmata Kyverno Enterprise
(Nirmata Kyverno 企业版)。
-
发布者:Teleport
-
名称 –
teleport_teleport
-
版本:
v10.3.1-eksbuild.0
-
命名空间:
teleport
-
服务账户名称:此附加组件未使用服务账户。
-
AWS 托管 IAM policy:此附加组件不使用托管策略。
-
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Teleport 文档中的 How Teleport Works
(Teleport 的工作原理)。
-
发布者:Tetrate
-
名称 –
tetrate-io_istio-distro
-
版本:
v1.15.3-eksbuild.0
-
命名空间:
istio-system
-
服务账户名称:此附加组件未使用服务账户。
-
AWS 托管 IAM policy:此附加组件不使用托管策略。
-
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Tetrate Istio Distro
网站。
-
发布者:Upbound
-
名称 –
upbound_universal-crossplane
-
版本:
v1.9.1-eksbuild.0
-
命名空间:
upbound-system
-
服务账户名称:此附加组件未使用服务账户。
-
AWS 托管 IAM policy:此附加组件不使用托管策略。
-
自定义 IAM 权限:此附加组件不使用自定义权限。
-
设置和使用说明:请参阅 Upbound 文档中的 Upbound Universal Crossplane(UXP)
。