

 **帮助改进此页面** 

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

# Amazon EKS 架构
<a name="eks-architecture"></a>

Amazon EKS 与 Kubernetes 的通用集群架构保持一致。有关更多信息，请参阅 Kubernetes 文档中的 [Kubernetes 组件](https://kubernetes.io/docs/concepts/overview/components/)。以下部分介绍了 Amazon EKS 的一些额外架构细节。

## 控制面板
<a name="control-plane"></a>

Amazon EKS 确保每个集群都有自身独有的 Kubernetes 控制面板。这种设计使每个集群的基础设施保持独立，集群或 AWS 账户之间没有重叠。该设置包括：

 **分布式组件**   
控制面板将至少两个 API 服务器实例和三个 [etcd](https://etcd.io/) 实例放置在 AWS 区域内的三个 AWS 可用区中。

 **最佳性能**   
Amazon EKS 会主动监控和调整控制面板实例，以保持最高性能。

 **恢复能力**   
如果控制面板实例发生故障，Amazon EKS 会迅速将其替换，必要时会使用不同的可用区。

 **稳定的正常运行时间**   
通过在多个可用区运行集群，实现了可靠的 [API 服务器端点可用性服务水平协议（SLA）](https://aws.amazon.com/eks/sla)。

Amazon EKS 使用 Amazon Virtual Private Cloud（Amazon VPC）来限制单个集群中控制面板组件之间的流量。除非得到 Kubernetes 基于角色的访问控制（RBAC）策略授权，否则，集群组件无法查看或接收来自其他集群或其他 AWS 账户的通信。

## 计算
<a name="nodes"></a>

除了控制面板，Amazon EKS 集群还有一组称为节点的工作计算机。选择适当的 Amazon EKS 集群节点类型对于满足您的特定要求和优化资源利用率至关重要。Amazon EKS 提供以下主节点类型：

 **EKS 自动模式**   
 [EKS 自动模式](automode.md)将 AWS 管理扩展到控制面板之外，将数据面板也包括在内，从而实现集群基础设施管理的自动化。自动模式将 Kubernetes 的核心功能集成为内置组件，包括计算自动扩缩、联网、负载均衡、DNS、存储和 GPU 支持等。EKS 自动模式使用具有增强安全功能的不可变 AMI，根据工作负载需求动态管理节点。在尊重容器组中断预算的同时自动更新和升级，并且包含原本需要附加组件管理的托管式组件。此选项非常适合希望利用 AWS 的专业知识满足日常运营需要，尽可能减少运营开销，并专注于应用程序开发而不是基础设施管理的用户。

 ** AWSFargate**   
 [Fargate](fargate.md) 是一个用于容器的无服务器计算引擎，无需管理底层实例。借助 Fargate，您可以指定应用程序的资源需求，然后 AWS 自动预置、扩展和维护基础设施。对于优先考虑易用性并希望专注于应用程序开发和部署而不是管理基础设施的用户来说，此选项非常适合。

 **Karpenter**   
 [Karpenter](https://karpenter.sh/) 是一款灵活的高性能 Kubernetes 集群自动扩缩器，可帮助提高应用程序可用性和集群效率。Karpenter 可启动适当规模的计算资源来响应不断变化的应用程序负载。此选项可以预置即时计算资源，以满足您的工作负载要求。

 **托管节点组**   
 [托管节点组](managed-node-groups.md)是自动化和自定义的混合体，用于管理 Amazon EKS 集群中的 Amazon EC2 实例集合。AWS 负责修补、更新和扩展节点之类的任务，从而简化操作方面的工作。同时，还支持自定义 `kubelet` 参数，为高级 CPU 和内存管理策略提供了可能性。此外，它们还通过服务账户的 AWS Identity and Access Management（IAM）角色增强安全性，同时限制每个集群对单独权限的需求。

 **自行管理的节点**   
 [自行管理节点](worker.md)可完全控制 Amazon EKS 集群中的 Amazon EC2 实例。您负责管理、扩展和维护节点，从而完全控制底层基础设施。对于需要对其节点进行精细控制和自定义，并准备投入时间管理和维护其基础设施的用户来说，此选项非常适合。

 **Amazon EKS 混合节点功能**   
借助 [Amazon EKS 混合节点功能](hybrid-nodes-overview.md)，您可以将本地和边缘基础设施作为 Amazon EKS 集群中的节点。Amazon EKS 混合节点功能实现了跨环境的统一 Kubernetes 管理，将本地和边缘应用程序的 Kubernetes 控制面板管理工作转移到 AWS。

## EKS 功能
<a name="eks-capabilities"></a>

Amazon EKS 提供完全托管的集群功能，会在集群中安装并管理 Kubernetes API（包含 Kubernetes 自定义资源定义），同时在 AWS 自有基础设施中运行控制器及其他组件，与您的集群相互隔离。EKS 会对这些功能进行自动化补丁更新、扩缩与监控，对其生命周期进行完全托管，从而减轻您在运行集群内工作负载编排、AWS 资源管理等相关服务时的运维负担。

EKS 提供以下功能类型：

 ** AWS Controllers for Kubernetes（ACK）**   
 [AWS Controllers for Kubernetes（ACK）](ack.md)支持您通过 Kubernetes API 管理 AWS 资源，您可将 S3 存储桶、RDS 数据库、IAM 角色及其他 AWS 资源定义为 Kubernetes 自定义资源。您能够使用统一的工具与流程，将 AWS 资源和 Kubernetes 工作负载纳入同一管理体系，该工具支持包括 S3、RDS、DynamoDB 及 Lambda 在内的 50 余种 AWS 服务。

 **Argo CD**   
 [Argo CD](argocd.md) 基于 GitOps 理念为应用工作负载、AWS 资源及集群配置实现持续部署功能，并将 Git 存储库作为基准依据。Argo CD 会自动将集群与 Git 存储库进行同步，同时检测配置偏差，通过持续协调来确保已部署的应用和资源，与版本控制系统中定义的预期状态保持一致。您可借助 Argo CD 管理指定集群上的应用，也能通过单个 Argo CD 资源跨多个集群部署并管理应用；当 Git 存储库中提交变更时，该工具会自动触发部署流程。

 **kro（Kube Resource Orchestrator）**   
 [kro（Kube Resource Orchestrator）](kro.md)支持您创建自定义 Kubernetes API，可将多种资源组合为更高级别的抽象资源，方便平台团队针对常见的资源组合模式，定义可复用的标准化模式。借助这一能力，平台团队能够为开发者提供带有合规管控规则的自助服务功能，让开发者通过简洁且面向特定场景的 API 即可配置复杂基础设施，同时保障相关配置始终符合企业规范与最佳实践。