

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 可靠性最佳实践
<a name="reliability"></a>

本节提供有关如何使在 EKS 上运行的工作负载具有弹性和高可用性的指导

## 如何使用本指南
<a name="how-to-use-this-guide"></a>

本指南适用于想要在 EKS 中开发和运营高可用性和容错服务的开发人员和架构师。为了便于阅读，该指南分为不同的主题领域。每个主题都以简要概述开头，然后列出有关您的 EKS 集群可靠性的建议和最佳实践。

## 简介
<a name="introduction"></a>

EKS 的可靠性最佳实践分为以下主题：
+ 应用程序
+ 控制层面
+ 数据层面

是什么使系统可靠？ 如果系统在一段时间内环境发生变化，但仍能始终如一地运行并满足需求，则可以称之为可靠。为实现这一目标，系统必须检测故障，自动自我修复，并能够根据需求进行扩展。

客户可以使用 Kubernetes 作为基础，可靠地运行关键任务应用程序和服务。但是，除了采用基于容器的应用程序设计原则外，可靠地运行工作负载还需要可靠的基础架构。在 Kubernetes 中，基础设施包括控制平面和数据平面。

EKS 提供了生产级 Kubernetes 控制平面，该控制平面旨在实现高可用性和容错性。

在 EKS 中，AWS 负责 Kubernetes 控制平面的可靠性。EKS 在一个 AWS 区域的三个可用区中运行 Kubernetes 控制平面。它会自动管理 Kubernetes API 服务器和 etcd 集群的可用性和可扩展性。

数据平面可靠性的责任由您、客户和 AWS 共同承担。EKS 为部署 Kubernetes 数据平面提供了四个工作节点选项。

 [EKS Auto Mod](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) e 是最受管理的选项，它可以处理数据平面的配置、扩展和更新，同时提供托管计算、网络和存储功能。自动模式 AMIs 经常发布，集群会自动更新到最新的 AMI，以部署 CVE 修复和安全补丁。您可以通过在自动模式上配置[中断控制来控制](https://docs.aws.amazon.com/eks/latest/userguide/create-node-pool.html#_disruption)何时发生这种情况 NodePools。

Fargate 通过每个节点运行一个 Pod 来处理数据平面的配置和扩展。第三个选项是托管节点组，用于处理数据平面的配置和更新。最后，自我管理的节点是数据平面中管理最少的选项。您使用的 AWS 管理的数据平面越多，您承担的责任就越少。

 [托管节点组](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-groups.html)可自动执行 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也可以管理更新节点](https://docs.aws.amazon.com/eks/latest/userguide/update-managed-node-group.html)。EKS 文档中解释了[更新托管节点](https://docs.aws.amazon.com/eks/latest/userguide/managed-node-update-behavior.html)的过程。

如果您运行自管理节点，则可以使用 [Amazon EKS 优化的 Linux AMI](https://docs.aws.amazon.com/eks/latest/userguide/eks-optimized-ami.html) 来创建工作节点。您负责修补和升级 AMI 和节点。最佳做法是使用`eksctl` CloudFormation、或基础架构作为代码工具来配置自我管理节点，因为这样可以轻松[升级自我管理](https://docs.aws.amazon.com/eks/latest/userguide/update-workers.html)的节点。在更新工作[节点时，请考虑迁移到新](https://docs.aws.amazon.com/eks/latest/userguide/migrate-stack.html)节点，因为迁移过程**会将旧的节点组弄成污染**，`NoSchedule`并在新堆栈准备好接受现有 Pod 工作负载后**耗尽**节点。但是，您也可以对[自行管理的节点进行就地升级](https://docs.aws.amazon.com/eks/latest/userguide/update-stack.html)。

 **责任共担模型——Fargate** 

![\[责任共担模型——Fargate\]](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/reliability/SRM-Fargate.jpeg)


 **责任共担模型-MNG** 

![\[责任共担模型-MNG\]](http://docs.aws.amazon.com/zh_cn/eks/latest/best-practices/images/reliability/SRM-MNG.jpeg)


本指南包括一组建议，您可以使用这些建议来提高 EKS 数据平面、Kubernetes 核心组件和应用程序的可靠性。

## 反馈
<a name="feedback"></a>

本指南即将发布， GitHub 旨在收集来自更广泛 EKS/Kubernetes 社区的直接反馈和建议。如果您认为我们应该在指南中包含最佳实践，请在 GitHub 存储库中提交问题或提交 PR。随着服务中添加新功能或新的最佳实践的发展，我们打算定期更新该指南。