确保按照用户指南“Fargate 入门”部分中描述的步骤“创建 Fargate pod 执行角色”进行操作。需要 Fargate pod 执行角色,以便 Fargate 能够完成其工作。创建的角色(用户指南建议的AmazonEKSFargatePodExecutionRole )将具有以下策略
有状态服务
您可能还记得,我们系列中迄今为止使用的部署设置由有状态数据库层(基于 mysql 映像)和无状态服务层(SpringBoot API)组成。
首先我们来谈谈有状态服务。因为不幸的是,正如我从惨痛经历中认识到的那样,Fargate 和有状态服务并不是天作之合。事实上,Fargate 不支持有状态服务。说实话,目前的设置可能不会让您赢得任何建筑奖项。将数据 智利号码数据 库作为有状态的 pod 运行没有多大意义。您最好使用 Amazon 的 RDS 产品之一。但是从 EKS 集群内部连接到 Amazon RDS 肯定不是一件容易的事,这是我们将在以后的博客文章中解决的问题。
尽管如此,我仍然会坚持当前的部署,因为它们将向您展示在 Fargate 上运行的 pod 和在配置的节点组上运行的 pod 仍然可以很好地协同工作。
我们将以与上一篇文章相同的方式创建此集群,即借助 eksctl 配置文件。这将包含一个用于数据库层 pod 的节点组和两个 Fargate 配置文件,一个用于系统和默认 pod,一个用于我们的服务层 pod:
如您所见,我们为默认和系统命名空间中的 pod定义了fp-default配置文件,并为tb-demo命名空间中具有app=service标签的pod定义了fp-demo-service配置文件(因此只有我们的无状态 pod)。
创建集群
好的,让我们创建集群并看看我们的设置是否有效!打开 bash 终端并使用eksctl CLI 输入以下命令:
eksctl create cluster -f eks-terrax-fargate.yamlCopy复制
稍后享受一杯美味的皮尔森啤酒所需的时间,您将创建第一个注入 Fargate 的 EKS 集群。终端中的输出应类似于下图:
正如您在日志中看到的,在此过程中再次创建了一个非常令人印象深刻的 CloudFormation Stack,您可以在 AWS 控制台中查看它:
当然,您也可以打开 EKS 集群页面来验证新集群的状态。
让我们检查 kubectl 是否已连接,并查看此设置已创建的节点:
kubectl get nodes --namespace=tb-demoCopy复制
如您所见,最低的节点是我们实际配置的节点,而顶部的两个节点是 Fargate 创建的用于运行系统 pod 的节点。