

 **帮助改进此页面** 

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

# 通过示例学习 Amazon EKS
<a name="learn-eks"></a>

## 概述
<a name="overview"></a>

本 Amazon EKS 用户指南包含通过 [命令行](getting-started-eksctl.md)或 [Amazon Web Services 管理控制台](getting-started-console.md)创建第一个 EKS 集群的通用过程，以及有关所有主要 Amazon EKS 组件的可靠参考。不过，作为 Amazon EKS 集群管理员或开发人员，除本指南之外，您还可以通过其他网站中存在的学习路径来更深入了解 Amazon EKS。借助这些网站，您可以学习：
+  **设置特定类型的集群**。具体的集群类型可能取决于您的工作负载类型或安全要求。例如，您可能需要优化集群以运行批处理、机器学习或计算密集型工作负载。
+  **强化您的集群**。您可以向集群添加各种高级功能，以提供可观测性、灵活存储、自动扩缩或专用集群网络等功能。
+  **自动更新**。借助 GitOps 等功能，您可以进行相应的设置，以根据 Git 存储库中相关组件发生的变化自动预置集群基础设施和工作负载。
+  **使用高级集群设置工具**。您不仅可以利用 `eksctl` 快速创建集群，此外还可以借助多种其他的工具，更轻松地配置和升级更复杂的集群。这包括 [Terraform](https://www.terraform.io/) 和 [CloudFormation](https://www.amazonaws.cn/cloudformation/) 等工具。

要启动自己的 Amazon EKS 学习路径，我建议您访问本页中描述的一些网站。如果您在此过程中遇到问题，还可以使用一些资源来帮助解决问题。例如，您可以通过 [Re:post 知识中心](https://repost.aws/search/content?globalSearch=EKS)搜索有关 Amazon EKS 相关支持问题的支持数据库。此外，[Amazon EKS 最佳实践指南](https://aws.github.io/aws-eks-best-practices/)还提供了有关设置生产级集群的最佳方法提示。

## Amazon EKS 研讨会
<a name="eks-workshop"></a>

[Amazon EKS 讲习会](https://www.eksworkshop.com/)是一个非常实用的学习平台，从 Kubernetes 和容器的基础知识开始，为集群管理员讲解 Amazon EKS 的重要功能。您可以通过以下方式参加 Amazon EKS 讲习会：
+  **Amazon EKS 基础知识**：观看[概述](https://www.eksworkshop.com/docs/introduction)页面上的视频，了解 Amazon EKS 如何在 Amazon 云上实现相关 Kubernetes 功能。如果需要了解更多有关 Kubernetes 的基础知识，可以观看[什么是 Kubernetes](https://www.youtube.com/watch?v=a2gfpZE8vXY) 视频。
+  **Amazon EKS 设置**：如果您有 Amazon 账户，则可通过[设置](https://www.eksworkshop.com/docs/introduction/setup/)部分来了解如何设置 CloudShell 环境以便创建集群。在这一部分中，您可以选择 [eksctl](https://www.eksworkshop.com/docs/introduction/setup/your-account/using-eksctl)（一个简单的集群创建命令行）和 [Terraform](https://www.eksworkshop.com/docs/introduction/setup/your-account/using-terraform)（一种更类似于基础设施即代码的集群创建方法）来创建 Amazon EKS 集群。
+  **Amazon EKS 入门**：从[示例应用](https://www.eksworkshop.com/docs/introduction/getting-started/about)部分试用一个简单的网上商店。您可以将此示例用于其他练习。在这一部分中，您还可以了解如何[打包容器映像](https://www.eksworkshop.com/docs/introduction/getting-started/packaging-application)，以及如何使用 Kubernetes 容器组、部署、服务、StatefulSets 和命名空间来管理微服务。然后使用 Kustomize 将更改部署到 Kubernetes 清单中。
+  **Amazon EKS 基本功能**：此讲习会使用 [Amazon Load Balancer Controller](https://www.eksworkshop.com/docs/fundamentals/exposing/aws-lb-controller) 等 Amazon 功能，演示了如何对外公开您的应用程序。对于存储，此讲习会演示了如何在 Amazon 中使用 [Amazon EBS](https://www.eksworkshop.com/docs/fundamentals/storage/ebs/) 进行块存储，使用 [Amazon EFS](https://www.eksworkshop.com/docs/fundamentals/storage/efs/) 进行文件系统存储，以及使用 Amazon FSx for NetApp ONTAP 来管理 ONTAP 文件系统。对于节点管理，此讲习会提供了有关设置[托管式节点组](https://www.eksworkshop.com/docs/fundamentals/managed-node-groups/)的帮助。
+  **Amazon EKS 高级功能**：此 Amazon EKS 讲习会提供演示了更多高级功能，包括有关以下功能设置的实验：
  + 自动扩缩：这包括节点自动扩缩（使用[集群自动扩缩器](https://www.eksworkshop.com/docs/autoscaling/compute/cluster-autoscaler/)或 [Karpenter](https://www.eksworkshop.com/docs/autoscaling/compute/karpenter/)）和工作负载自动扩缩（使用[横向容器组自动扩缩器](https://www.eksworkshop.com/docs/autoscaling/workloads/horizontal-pod-autoscaler/)和[集群比例自动扩缩器](https://www.eksworkshop.com/docs/autoscaling/workloads/cluster-proportional-autoscaler/)）。
  + 可观测性：通过一系列[可观察性实验](https://www.eksworkshop.com/docs/observability/)，来了解[日志记录](https://www.eksworkshop.com/docs/observability/logging/)、[OpenSearch](https://www.eksworkshop.com/docs/observability/opensearch/)、[Amazon EKS 上的 Container Insights](https://www.eksworkshop.com/docs/observability/container-insights/) 以及[使用 Kubecost 实现成本可见性](https://www.eksworkshop.com/docs/observability/kubecost/)等功能。
  + 安全性：通过这组[安全性实验](https://www.eksworkshop.com/docs/security/)，您可以了解[密钥管理](https://www.eksworkshop.com/docs/security/secrets-management/)、[Amazon GuardDuty](https://www.eksworkshop.com/docs/security/guardduty/)、[容器组安全标准](https://www.eksworkshop.com/docs/security/pod-security-standards/)和 [Kyverno 策略管理](https://www.eksworkshop.com/docs/security/kyverno/)等功能。
  + 联网：通过[联网](https://www.eksworkshop.com/docs/networking/)实验来了解 Amazon EKS 的联网功能，包括 [Amazon VPC CNI](https://www.eksworkshop.com/docs/networking/vpc-cni/)（支持网络插件）和 [Amazon VPC Lattice](https://www.eksworkshop.com/docs/networking/vpc-lattice/)（用于跨 VPC 和用户账户配置集群）。
  + 自动化：通过[自动化](https://www.eksworkshop.com/docs/automation/)实验，您可以分步详细了解管理集群和项目的 [GitOps](https://www.eksworkshop.com/docs/automation/gitops/) 方法，例如[适用于 Kubernetes 的 Amazon 控制器](https://www.eksworkshop.com/docs/automation/controlplanes/ack/)和用于管理 Amazon EKS 控制面板的 [Crossplane](https://www.eksworkshop.com/docs/automation/controlplanes/crossplane/)。

## Amazon EKS 集群设置动手实验教程
<a name="eks-hands-on-cluster-setup-tutorials"></a>

Amazon 社区网站提供了一系列 [Amazon EKS 集群设置教程](https://community.aws/tags/eks-cluster-setup)，可为您提供有关创建特殊用途 Amazon EKS 集群以及以各种方式强化这些集群的帮助。这些教程分为三种类型：

 *集群构建类* 

此类教程可为您提供有关构建特殊用途集群的帮助。特殊用途包括下列功能：
+  [运行基于 IPv6 的全球可扩展应用程序](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-ipv6-globally-scalable) 
+  [运行异步批处理任务](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-batch-processing) 
+  [运行大流量微服务](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-high-traffic) 
+  [在 Fargate 上使用 Karpenter 进行自动扩缩](https://community.aws/tutorials/navigating-amazon-eks/eks-karpenter-fargate) 
+  [运行金融工作负载](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-financial-workload) 
+  [运行 Windows 托管式节点组](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-windows-fargate) 

 *集群强化类* 

如果您已经拥有集群，则可以对现有的集群进行扩展和强化以便运行专门的工作负载，以及通过其他方式强化集群。此类教程包含了下列集群强化方式：
+  [使用 EFS CSI 提供存储解决方案](https://community.aws/tutorials/navigating-amazon-eks/eks-with-efs-add-on/) 
+  [使用 EBS CSI 提供动态数据库存储](https://community.aws/tutorials/navigating-amazon-eks/eks-dynamic-db-storage-ebs-csi) 
+  [使用 Amazon Load Balancer Controller 公开 IPv4 集群上的应用程序](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-load-balancer-ipv4) 
+  [使用 Amazon Load Balancer Controller 公开 IPv6 集群上的应用程序](https://community.aws/tutorials/navigating-amazon-eks/eks-cluster-load-balancer-ipv6) 

 *Amazon 服务优化类* 

此类教程有助您更好地将集群与 Amazon 服务集成。此类教程可在下列方面为您提供帮助：
+  [使用 ExternalDNS 管理微服务的 DNS 记录](https://community.aws/tutorials/navigating-amazon-eks/automating-dns-records-for-microservices-using-externaldns/) 
+  [使用 CloudWatch 监控应用程序](https://community.aws/tutorials/navigating-amazon-eks/eks-monitor-containerized-applications) 
+  [使用 SQS 和 EFS 存储管理异步任务](https://community.aws/tutorials/navigating-amazon-eks/managing-high-volume-batch-sqs-eks) 
+  [使用来自工作负载中的 Amazon Secrets Manager 密钥](https://community.aws/tutorials/navigating-amazon-eks/eks-integrate-secrets-manager) 
+  [使用 Fargate、NGINX 和 ACM PCA 设置 mTLS](https://community.aws/tutorials/navigating-amazon-eks/eks-fargate-mtls-nginx-controller) 

## Amazon EFS 示例
<a name="eks-samples"></a>

[Amazon EKS 示例](https://github.com/aws-samples/aws-eks-se-samples)存储库存储了可用于 Amazon EKS 的清单。借助这些清单，您可以在 Amazon EKS 中试用不同类型的应用程序或创建特定类型的 Amazon EKS 集群。这些示例包含下列用途的清单：
+  [创建 Amazon Amazon EKS Fargate 集群](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/eksctl/how-to-eks-fargate) 
+  [使用现有 IAM 角色创建集群](https://github.com/aws-samples/aws-eks-se-samples/blob/main/examples/eksctl/how-to-existing-iamrole/existing-role.yaml) 
+  [将 Ubuntu 托管节点组添加到集群](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/eksctl/how-to-ubuntu-nodegroups) 
+  [使用卷快照备份和还原容器组存储](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-backup-restore-ebs-pvc) 
+  [恢复作为 PVC 挂载到多个账户的 EBS 卷](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-dr-multi-account) 
+  [为使用经典负载均衡器的 NGINX 入口控制器启用代理协议](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-enable-proxy-procotcol-clb) 
+  [配置将 Fargate 上的日志记录到 Amazon OpenSearch](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-logging-eks-fargate-opensearch) 
+  [使用 Web 联合身份提供者运行 Python SDK](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-python-sdk-containers) 
+  [在 NFS CSI 控制器上部署示例应用程序](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-setup-nfs-csi-eks) 
+  [将卷快照用于 StatefulSets](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-snapshot-restore-resize-sts) 
+  [跨不同可用区的节点部署容器组](https://github.com/aws-samples/aws-eks-se-samples/tree/main/examples/kubernetes/how-to-topology-awareness-hints) 

请记住，这些示例仅供学习和测试之用，并非旨在用于生产环境。

## Amazon 教程
<a name="aws-tutorials"></a>

[Amazon 教程](https://www.amazonaws.cn/tutorials)网站发布了一些 Amazon EKS 教程，此外还提供了搜索工具，可用于查找在 Amazon 网站（例如 Amazon 社区网站）上发布的其他教程。直接在该网站上发布的 Amazon EKS 教程包括：
+  [在 Amazon EKS 上部署容器化 Web 应用程序](https://www.amazonaws.cn/tutorials/deploy-webapp-eks/) 
+  [以更低的成本运行 Kubernetes（Amazon EKS 和竞价型实例）](https://www.amazonaws.cn/tutorials/amazon-eks-with-spot-instances/) 
+  [如何优化 Kubernetes 上的 Jenkins 作业成本](https://www.amazonaws.cn/tutorials/cost-optimize-jenkins/) 

## 开发人员讲习会
<a name="developers-workshop"></a>

如果您是软件开发人员，并且想要创建或重构应用程序以在 Amazon EKS 上运行，那么 [Amazon EKS 开发人员讲习会](https://developers.eksworkshop.com)是一个不错的敲门砖。该讲习会不仅提供了有关如何构建容器化应用程序的帮助，还提供了有关如何将容器部署到容器注册表（[ECR](https://www.amazonaws.cn/ecr/)），然后再部署到 Amazon EKS 集群的帮助。

您可以首先学习 [Amazon EKS Python 讲习会](https://developers.eksworkshop.com/docs/python/)，了解重构 python 应用程序的过程，然后设置开发环境以做好部署应用程序的准备。仔细阅读有关容器、Kubernetes 和 Amazon EKS 的章节，了解如何做好准备以在这些环境中运行容器化应用程序。

## Terraform 讲习会
<a name="terraform-workshop"></a>

`eksctl` 是一种十分简便的集群创建工具，而对于更复杂的基础设施即代码类 Amazon EKS 部署，更常用的 Amazon EKS 集群创建和管理工具是 [Terraform](https://www.terraform.io/)。[Terraform Amazon EKS 讲习会](https://catalog.us-east-1.prod.workshops.aws/workshops/afee4679-89af-408b-8108-44f5b1065cc7/en-US)讲解了如何使用 Terraform 构建 Amazon VPC、创建 Amazon EKS 集群以及为集群添加可选的增强功能。尤其是其中有一章节介绍了如何创建[私有 Amazon EKS 集群](https://catalog.us-east-1.prod.workshops.aws/workshops/afee4679-89af-408b-8108-44f5b1065cc7/en-US/500-eks-terraform-workshop) 

## Amazon Amazon EKS 培训
<a name="aws-eks-training"></a>

 Amazon 提供了学习 Amazon EKS 的正规培训。这一为期三天的培训课程名为 [Running Containers on Amazon Elastic Kubernetes Service](https://www.amazonaws.cn/training/classroom/running-containers-on-amazon-elastic-kubernetes-service-amazon-eks/)，将会讲授下列方面的知识：
+ Kubernetes 和 Amazon EKS 基础知识
+ 如何构建 Amazon EKS 集群
+ 使用 Amazon IAM 和 Kubernetes RBAC 授权来保护 Amazon EKS
+ GitOps 自动化工具
+ 监控工具
+ 优化成本、效率和弹性的技巧