

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 可靠性的最佳實務
<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 伺服器和 等叢集的可用性和可擴展性。

資料平面可靠性的責任由您、客戶和 AWS 共同承擔。EKS 提供四個用於部署 Kubernetes 資料平面的工作者節點選項。

 [EKS Auto Mode](https://docs.aws.amazon.com/eks/latest/userguide/automode.html) 是最受管的選項，可處理資料平面的佈建、擴展和更新，並提供受管運算、聯網和儲存功能。自動模式 AMIs會經常發行，而叢集會自動更新為最新的 AMI，以部署 CVE 修正和安全性修補程式。您可以在 Auto Mode NodePools 上設定[中斷控制](https://docs.aws.amazon.com/eks/latest/userguide/create-node-pool.html#_disruption)，藉此控制發生這種情況的時間。

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 也會自動標記受管節點，以便與 Cluster Autoscaler 搭配使用。

Amazon EKS 會遵循受管節點群組上 CVE 和安全修補程式的共同責任模型。由於受管節點執行 Amazon EKS 最佳化 AMIs，因此當錯誤修正時，Amazon 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_tw/eks/latest/best-practices/images/reliability/SRM-Fargate.jpeg)


 **共同責任模型 - MNG** 

![共同責任模型 - MNG](http://docs.aws.amazon.com/zh_tw/eks/latest/best-practices/images/reliability/SRM-MNG.jpeg)


本指南包含一組建議，您可以用來改善 EKS 資料平面、Kubernetes 核心元件和應用程式的可靠性。

## 意見回饋
<a name="feedback"></a>

本指南將在 GitHub 上發佈，以收集更廣泛的 EKS/Kubernetes 社群的直接意見回饋和建議。如果您有最佳實務，認為我們應該包含在指南中，請在 GitHub 儲存庫中提出問題或提交 PR。當新功能新增至服務或新的最佳實務演進時，我們打算定期更新指南。