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-admin
ClusterRoleBinding
将cluster-admin
ClusterRole
绑定到eks:addon-manager
Kubernetes 身份。该角色拥有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、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 策略。您可以创建 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-nameAmazonEKSVPCCNIRole
\ --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.27.
,并且您想要更新到x
-eksbuild.y
1.29.
,则必须首先更新到x
-eksbuild.y
1.28.
,再更新到x
-eksbuild.y
1.29.
。有关更新附加组件的更多信息,请参阅 更新 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 节点上的网络规则。它可以实现与 Pods 的网络通信。默认情况下,在集群中的每个 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.29,则kube-proxy
次要版本不能低于 1.27。 -
如果您最近将集群更新到新的 Kubernetes 次要版本,请先将 Amazon EC2 节点更新到相同的次要版本,然后再将
kube-proxy
更新到与节点相同的次要版本。
-
-
名称 –
aws-ebs-csi-driver
-
描述 – 为集群提供 Amazon EBS 存储的 Kubernetes Container Storage Interface(CSI)插件。
-
必需的 IAM 权限 – 此附加组件使用 Amazon EKS 的服务账户的 IAM 角色功能。
AmazonEBSCSIDriverPolicy
Amazon 托管策略中的权限是必需的。您可以使用以下命令创建 IAM 角色并将托管策略附加到其上。将
替换为您的集群的名称,并将my-cluster
替换为您的角色的名称。此命令要求您为您的设备安装AmazonEKS_EBS_CSI_DriverRole
eksctl
。如果您需要使用其他工具或需要使用自定义 KMS 密钥 进行加密,请参阅 创建 Amazon EBS CSI 驱动程序 IAM 角色。 eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster
my-cluster
\ --role-nameAmazonEKS_EBS_CSI_DriverRole
\ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve -
其他信息 – 要了解有关附加组件的更多信息,请参阅 Amazon EBS CSI 驱动程序。
重要
Amazon EFS 驱动程序在此 Amazon Web Services 区域中仅支持自行管理安装。有关如何将其添加为自行管理安装的说明,请参阅 GitHub 上的 安装
-
名称 –
aws-efs-csi-driver
-
描述 – 为集群提供 Amazon EFS 存储的 Kubernetes 容器存储接口(CSI)插件。
-
必需的 IAM 权限 – 此附加组件使用 Amazon EKS 的服务账户的 IAM 角色功能。
AmazonEFSCSIDriverPolicy
Amazon 托管策略中的权限是必需的。您可以使用以下命令创建 IAM 角色并为其附加托管式策略。将
替换为您的集群的名称,并将my-cluster
替换为您的角色的名称。这些命令要求您的设备事先安装AmazonEKS_EFS_CSI_DriverRole
eksctl
。如果您需要使用其他工具,请参阅 创建 IAM 角色。 export cluster_name=
my-cluster
export role_name=AmazonEKS_EFS_CSI_DriverRole
eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY" -
其他信息 – 要了解有关附加组件的更多信息,请参阅 Amazon EFS CSI 驱动程序。
-
名称 –
aws-mountpoint-s3-csi-driver
-
描述:一个 Kubernetes 容器存储接口(CSI)插件,可为集群提供 Amazon S3 存储。
-
必需的 IAM 权限 – 此附加组件使用 Amazon EKS 的服务账户的 IAM 角色功能。创建的 IAM 角色需要一个允许访问 S3 的策略。创建策略时,请遵循 Mountpoint IAM 权限建议
。或者,您可以使用 Amazon 托管策略 AmazonS3FullAccess ,但此托管策略授予的权限超出了 Mountpoint 所需的权限。 您可以使用以下命令创建 IAM 角色,并为其附加策略。将
my-cluster
替换为集群的名称,将
替换为正确的 Amazon Web Services 区域 代码,将region-code
AmazonEKS_S3_CSI_DriverRole
替换为角色的名称,将AmazonEKS_S3_CSI_DriverRole_ARN
替换为角色 ARN。这些命令要求您的设备事先安装eksctl
。有关如何使用 IAM 控制台或 Amazon CLI 的说明,请参阅 创建 IAM 角色。 CLUSTER_NAME=
my-cluster
REGION=
ROLE_NAME=region-code
AmazonEKS_S3_CSI_DriverRole
POLICY_ARN=AmazonEKS_S3_CSI_DriverRole_ARN
eksctl create iamserviceaccount \ --name s3-csi-driver-sa \ --namespace kube-system \ --cluster $CLUSTER_NAME \ --attach-policy-arn $POLICY_ARN \ --approve \ --role-name $ROLE_NAME \ --region $REGION \ --role-only -
其他信息 – 要了解有关附加组件的更多信息,请参阅 适用于 Amazon S3 的 Mountpoint CSI 驱动程序。
-
名称 –
snapshot-controller
-
描述:容器存储接口(CSI)快照控制器允许在兼容的 CSI 驱动程序(例如 Amazon EBS CSI 驱动程序)中使用快照功能。
-
所需的 IAM 权限 – 此附加组件不需要任何权限。
-
其他信息 – 要了解有关附加组件的更多信息,请参阅 CSI 快照控制器。
-
名称 –
adot
-
描述 – Amazon Distro for OpenTelemetry
(ADOT)是 OpenTelemetry 项目的安全、受 Amazon 支持的生产就绪型发行版。 -
所需的 IAM 权限:只有在使用可通过高级配置选择加入的预配置自定义资源时,该插件才需要 IAM 权限。
-
其他信息:有关更多信息,请参阅适用于 OpenTelemetry 的 Amazon Distro 文档中的使用 EKS 插件且适用于 OpenTelemetry 的 Amazon Distro 入门
。 ADOT 要求将
cert-manager
作为先决条件部署在集群上,否则如果使用 Amazon EKS Terraformcluster_addons
属性直接部署,此插件将无法运行。有关更多要求,请参阅适用于 OpenTelemetry 的 Amazon Distro 文档中的使用 EKS 插件且适用于 OpenTelemetry 的 Amazon Distro 入门要求。
-
名称 –
eks-pod-identity-agent
-
描述:Amazon EKS 容器组身份提供管理应用程序凭证的功能,类似于 Amazon EC2 实例配置文件为 EC2 实例提供凭证的方式。
-
所需的 IAM 权限:此插件的用户权限来自 Amazon EKS 节点 IAM 角色。
-
更新信息 – 您一次只能更新一个次要版本。例如,如果当前版本为
1.27.
,并且您想要更新到x
-eksbuild.y
1.29.
,则必须首先更新到x
-eksbuild.y
1.28.
,再更新到x
-eksbuild.y
1.29.
。有关更新附加组件的更多信息,请参阅 更新 Amazon EKS 附加组件。x
-eksbuild.y