本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
可靠性最佳实践
本节提供有关如何使在 EKS 上运行的工作负载具有弹性和高可用性的指导
如何使用本指南
本指南适用于想要在 EKS 中开发和运营高可用性和容错服务的开发人员和架构师。为了便于阅读,该指南分为不同的主题领域。每个主题都从简要概述开始,然后列出有关您的 EKS 集群可靠性的建议和最佳实践。
简介
EKS 的可靠性最佳实践分为以下主题:
-
应用程序
-
控制层面
-
数据层面
是什么使系统可靠? 如果系统在一段时间内环境发生变化,但仍能始终如一地运行并满足需求,则可以称之为可靠。为实现这一目标,系统必须检测故障,自动自我修复,并能够根据需求进行扩展。
客户可以使用 Kubernetes 作为基础,可靠地运行关键任务应用程序和服务。但是,除了采用基于容器的应用程序设计原则外,可靠地运行工作负载还需要可靠的基础架构。在 Kubernetes 中,基础设施包括控制平面和数据平面。
EKS 提供了生产级 Kubernetes 控制平面,该控制平面旨在实现高可用性和容错性。
在 EKS 中,AWS 负责 Kubernetes 控制平面的可靠性。EKS 在一个 AWS 区域的三个可用区中运行 Kubernetes 控制平面。它会自动管理 Kubernetes API 服务器和 etcd 集群的可用性和可扩展性。
数据平面可靠性的责任由您、客户和 AWS 共同承担。EKS 为部署 Kubernetes 数据平面提供了三个工作节点选项。Fargate 是最受管理的选项,负责处理数据平面的配置和扩展。第二个选项是托管节点组,用于处理数据平面的配置和更新。最后,自我管理的节点是数据平面中管理最少的选项。您使用的 AWS 管理的数据平面越多,您承担的责任就越少。
托管节点组可自动执行 EC2节点的配置和生命周期管理。您可以使用 EKS API(使用 EKS 控制台、AWS API、AWS CLI CloudFormation、Terraform 或eksctl
)来创建、扩展和升级托管节点。托管节点在您的账户中运行 EKS 优化的 Amazon Linux 2 EC2 实例,您可以通过启用 SSH 访问来安装自定义软件包。当您配置托管节点时,它们会作为 EKS 管理的 Auto Scaling 组的一部分运行,该组可以跨越多个可用区;您可以通过在创建托管节点时提供的子网进行控制。EKS 还会自动标记托管节点,以便它们可以与集群自动扩缩器一起使用。
Amazon EKS 遵循托管节点组的分担责任模式 CVEs 和安全补丁。由于托管节点运行经过 Amazon EKS 优化的节点,因此 A AMIs mazon EKS 负责在修复错误 AMIs 时构建这些节点的补丁版本。但是,您负责将这些修补的 AMI 版本部署到托管节点组。
尽管你必须启动更新过程,但EKS也可以管理更新节点。EKS 文档中介绍了更新托管节点的过程。
如果您运行自管理节点,则可以使用 Amazon EKS 优化的 Linux AMI 来创建工作节点。您负责修补和升级 AMI 和节点。最佳做法是使用eksctl
CloudFormation、或基础架构作为代码工具来配置自我管理节点,因为这样可以轻松升级自我管理的节点。在更新工作节点时,请考虑迁移到新节点,因为迁移过程会将旧的节点组弄成污染,NoSchedule
并在新堆栈准备好接受现有 Pod 工作负载后耗尽节点。但是,您也可以对自行管理的节点进行就地升级。
责任共担模型——Fargate

责任共担模型-MNG

本指南包括一组建议,您可以使用这些建议来提高 EKS 数据平面、Kubernetes 核心组件和应用程序的可靠性。
反馈
本指南即将发布, GitHub 旨在收集来自更广泛的 EKS/Kubernetes 社区的直接反馈和建议。如果您认为我们应该在指南中包含最佳实践,请在 GitHub 存储库中提交问题或提交 PR。随着服务中添加新功能或新的最佳实践的发展,我们打算定期更新该指南。