帮助改进此页面
要帮助改进本用户指南,请选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。
EKS 功能和注意事项
本主题涵盖了使用 EKS 功能的重要注意事项,包括访问控制设计、在 EKS 功能和自主管理型解决方案之间进行选择、多集群部署的架构模式以及最佳操作实践。
功能 IAM 角色和 Kubernetes RBAC
每个 EKS 功能资源都有一个已配置的功能 IAM 角色。功能角色用于授予 EKS 功能代表您执行操作的 Amazon 服务权限。例如,要使用适用于 ACK 的 EKS 功能来管理 Amazon S3 存储桶,您需要向该功能授予 S3 存储桶管理权限,使其能够创建和管理存储桶。
配置该功能后,即可使用集群中的 Kubernetes 自定义资源创建和管理 AWS 中的 S3 资源。Kubernetes RBAC 是一种集群内访问控制机制,用于确定哪些用户和组可以创建和管理这些自定义资源。例如,向特定的 Kubernetes RBAC 用户和组授予在您选择的命名空间中创建和管理 Bucket 资源的权限。
因此,IAM 和 Kubernetes RBAC 共同构成了管理与 EKS 功能和资源相关的权限的端到端访问控制系统。为您的使用案例设计一个 IAM 权限与 RBAC 访问策略的正确组合非常重要。
有关功能 IAM 角色和 Kubernetes 权限的更多信息,请参阅 EKS 功能的安全注意事项。
多集群架构模式
在跨多个集群部署功能时,请考虑以下常见的架构模式:
采用集中管理的中心和分支
在集中管理的集群中运行所有三项功能,以编排工作负载并管理多个工作负载集群中的云基础设施。
-
管理集群上的 Argo CD 可将应用程序部署到不同区域或账户中的工作负载集群
-
管理集群上的 ACK 会为所有集群预置 Amazon 资源(RDS、S3、IAM)
-
管理集群上的 kro 创建了适用于所有集群的可移植平台抽象
这种模式可以集中管理工作负载和云基础设施,并且可以简化管理许多集群的组织的操作。
分散式 GitOps
工作负载和云基础设施由运行工作负载的同一集群上的功能进行管理。
-
Argo CD 管理本地集群上的应用程序资源。
-
ACK 资源用于满足集群和工作负载需求。
-
已安装 kro 平台抽象并编排本地资源。
这种模式可以分散操作,团队在一个或多个集群中管理自己的专用平台服务。
采用混合 ACK 部署的中心和分支
将集中式和分散式模型与基于范围和所有权的集中式应用程序部署和资源管理相结合。
-
中心集群:
-
Argo CD 管理本地集群和所有远程工作负载集群的 GitOps 部署
-
ACK 在管理集群上用于管理员范围资源(生产数据库、IAM 角色、VPC)
-
kro 在管理集群上用于可重用的平台抽象
-
-
分支集群:
-
工作负载通过集中式中心集群上的 Argo CD 进行管理
-
ACK 在本地用于工作负载范围资源(S3 存储桶、ElastiCache 实例、SQS 队列)
-
kro 在本地用于资源组合和构建块模式
-
这种模式将关注点进行分离:平台团队在管理集群上集中管理关键基础设施,可以选择包括工作负载集群,而应用程序团队则指定和管理云资源以及工作负载。
选择模式
选择架构时要考虑以下因素:
-
组织结构:集中式平台团队偏向于选择中心模式;去中心化团队可能更偏好每个集群的功能
-
资源范围:管理员范围的资源(数据库、IAM)通常受益于中心管理;而工作负载资源(存储桶、队列)可以在本地管理
-
自助服务:集中式平台团队可以编写和分发规范性的自定义资源,以便实现常见工作负载需求的云资源安全自助服务
-
集群实例集管理:集中式管理集群为 EKS 集群实例集管理提供了客户拥有的控制面板以及其他管理员范围资源
-
合规性要求:一些组织需要对审计和治理采用集中式的控制
-
操作复杂性:较少的功能实例可以简化操作,但可能会造成瓶颈
注意
您可以从一种模式开始,然后随着平台的成熟发展到另一种模式。功能是独立的,您可以根据需要跨集群以不同的方式进行部署。
将 EKS 功能与自主管理型解决方案进行比较
EKS 功能为在 EKS 中运行的常用 Kubernetes 工具和控制器提供完全托管的体验。这与自主管理型解决方案不同,后者是在集群中安装和运行的。
主要区别
部署和管理
Amazon 完全管理 EKS 功能,无需安装、配置或维护组件软件。Amazon 在集群中自动安装和管理所有必需的 Kubernetes 自定义资源定义(CRD)。
使用自主管理型解决方案,您可以使用 Helm 图表、kubectl 或其他运算符来安装和配置集群软件。您可以完全控制自主管理型解决方案的软件生命周期和运行时配置,并在解决方案的任何层面提供自定义设置。
操作与维护
Amazon 通过自动更新和安全补丁管理 EKS 功能的补丁和其他软件生命周期操作。EKS 功能与 Amazon 功能集成,实现配置简化,提供内置的高可用性和容错能力,并且无需对控制器工作负载进行集群内问题排查。
自主管理型的解决方案要求您监控组件运行状况和日志,应用安全补丁和版本更新,配置包含多个副本和容器组(pod)中断预算的高可用性,对控制器工作负载问题进行问题排查和修复,以及管理发行版和版本。您可以完全控制自己的部署,但这通常需要为私有集群访问权限和其他集成提供定制解决方案,这些解决方案必须符合组织标准和安全合规性要求。
资源消耗
EKS 功能在 EKS 和集群之外运行,从而释放节点资源和集群资源。EKS 功能不使用集群工作负载资源,不消耗 Worker 节点上的 CPU 或内存,可自动扩展,也可尽量减少对集群容量规划的影响。
自主管理型的解决方案在您的 Worker 节点上运行控制器和其他组件,直接消耗 Worker 节点资源、集群 IP 和其他集群资源。管理集群服务需要对其工作负载进行容量规划,并且需要规划和配置资源请求和限制,以管理扩展和高可用性需求。
功能支持
作为完全托管的服务功能,与自主管理型的解决方案相比,EKS 功能本质上是较为固定的。虽然 EKS 功能支持大多数功能和使用案例,但与自主管理型的解决方案相比,覆盖范围会有所不同。
使用自主管理型的解决方案,您可以完全控制软件的配置、可选功能和其他方面的功能。您可以选择运行自己的自定义映像,自定义配置的各个方面,并完全控制自主管理型的解决方案功能。
与成本相关的注意事项
每个 EKS 功能资源都有相关的每小时成本,该费用因功能类型而异。由该功能管理的集群资源还会产生关联的每小时成本,此部分成本具有独立定价。有关更多信息,请参阅 Amazon EKS 定价
自主管理型的解决方案没有与 Amazon 费用相关的直接成本,但您需要为控制器和相关工作负载使用的集群计算资源付费。除了节点和集群的资源消耗外,自主管理型解决方案的全部拥有成本还包括运营开销以及维护、问题排查和支持费用。
在 EKS 功能和自主管理型解决方案之间进行选择
EKS 功能当您想要减少运营开销,将注意力集中在软件和系统的差异化价值上,而不是为了基本要求而进行集群平台运营,请考虑这种选择。如果您希望最大限度地减少安全补丁和软件生命周期管理的运营负担,为应用程序工作负载腾出节点和集群资源,简化配置和安全管理,并从 Amazon 支持范围中受益,请使用 EKS 功能。EKS 功能非常适合大多数生产使用案例,也是新部署的推荐方法。
自主管理型解决方案当您需要特定的 Kubernetes 资源 API 版本、自定义控制器构建,拥有围绕自主管理型部署构建的现有自动化和工具,或者需要对控制器运行时配置进行深度自定义时,可以考虑这种选择。自主管理型的解决方案为特殊使用案例提供了灵活性,并且您可以完全控制自己的部署和运行时配置。
注意
EKS 功能可以通过自主管理型解决方案在您的集群中共存,并且可以实现分步迁移。
特定功能的比较
有关详细比较,包括功能特定的功能、上游差异和迁移路径,请参阅: