适用于 ACK 的 EKS 功能与自主管理型 ACK 功能的比较 - Amazon EKS

帮助改进此页面

要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。

适用于 ACK 的 EKS 功能与自主管理型 ACK 功能的比较

适用于 ACK 的 EKS 功能提供了与自主管理型 ACK 控制器相同的功能,且具备显著的运营优势。有关 EKS 功能与自主管理型解决方案的总体比较,请参阅 EKS 功能和注意事项。本主题将重点介绍 ACK 特有的差异。

与上游 ACK 的区别

适用于 ACK 的 EKS 功能基于上游 ACK 控制器,但在 IAM 集成方面有所不同。

IAM 功能角色:该功能将使用专用 IAM 角色,其信任策略允许 capabilities.eks.amazonaws.com 服务主体,而不允许 IRSA(用于服务账户的 IAM 角色)。您可以将 IAM 策略直接附加到功能角色,而无需创建 Kubernetes 服务账户或为其添加注释,也无需配置 OIDC 提供者。对于生产使用案例,最佳实践是使用 IAMRoleSelector 来配置服务权限。有关更多信息,请参阅配置 ACK 权限

会话标签:托管功能会为所有 AWS API 请求自动设置会话标签,从而实现精细的访问控制和审计。标签包括 eks:eks-capability-arneks:kubernetes-namespaceeks:kubernetes-api-group。这与自主管理的 ACK 有所不同,后者默认不设置这些标签。有关在 IAM 策略中使用会话标签的详细信息,请参阅 配置 ACK 权限

资源标签:该功能为 AWS 资源应用的默认标签与自主管理的 ACK 所应用的标签不同。该功能使用 eks: 前缀标签(例如 eks:kubernetes-namespaceeks:eks-capability-arn),而不是自主管理的 ACK 使用的 services.k8s.aws/ 标签。有关默认资源标签的完整列表,请参阅 针对 EKS 的 ACK 注意事项

资源兼容性:ACK 自定义资源的工作方式与上游 ACK 完全相同,您无需更改 ACK 资源 YAML 文件。该功能使用同一 Kubernetes API 和 CRD,因此 kubectl 等工具的使用方式将保持不变。支持上游 ACK 中所有已正式发布的控制器和资源。

有关完整的 ACK 文档及针对具体服务的指南,请参阅 ACK 文档

迁移路径

您可以从自主管理型 ACK 迁移到托管功能,且停机时间为零:

  1. 更新自主管理型 ACK 控制器,使其使用 kube-system 实现主节点选举租约,例如:

    helm upgrade --install ack-s3-controller \ oci://public.ecr.aws/aws-controllers-k8s/s3-chart \ --namespace ack-system \ --set leaderElection.namespace=kube-system

    这会将控制器的租约移至 kube-system,从而允许托管功能与其协调。

  2. 在集群上创建 ACK 功能(请参阅创建 ACK 功能

  3. 托管功能可识别出由 ACK 托管的 AWS 现有资源,并接管协调工作

  4. 逐步缩减或移除自主管理型控制器部署:

    helm uninstall ack-s3-controller --namespace ack-system

此方法允许两个控制器在迁移期间安全共存。托管功能会自动接管先前由自主管理型控制器托管的资源,确保持续协调且不发生冲突。

后续步骤