帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
开始将 Amazon Fargate 用于集群
本主题描述如何通过 Amazon EKS 集群开始在 Amazon Fargate 上运行 Pods。
如果使用 CIDR 块限制对集群的公有端点的访问,建议您还启用私有端点访问。通过这种方式,Fargate Pods 可以与集群通信。在未启用私有端点的情况下,您指定用于公有访问的 CIDR 块必须包含来自 VPC 的出站源。有关更多信息,请参阅 控制对集群 API 服务器端点的网络访问权限。
先决条件
现有集群。如果您还没有 Amazon EKS 集群,请参阅 开始使用 Amazon EKS。
第 1 步:确保现有节点可以与 Fargate Pods 进行通信
如果您使用的是没有节点的新集群,或是只有托管节点组的集群,可以跳至 第 2 步:创建 Fargate Pod 执行角色。
假设您正在使用已有关联节点的现有集群。确保这些节点上的 Pods 可以与 Fargate 上运行的 Pods 自由通信。Fargate 上运行的 Pods 会自动配置为为与这些节点关联的集群使用集群安全组。确保集群中的任何现有节点都可以向集群安全组发送流量以及从中接收流量。使用托管式节点组简化节点生命周期 也自动配置为使用集群安全组,这样无需修改或检查它们是否具备此兼容性。
针对已使用 eksctl
或者 Amazon EKS 管理 Amazon CloudFormation 模板创建的现有节点组,您可以手动将集群安全组添加到节点。或者,您也可以修改节点组的 Auto Scaling 组启动模板,以便将集群安全组附加到实例。想要了解更多有关信息,请参阅 Amazon VPC 用户指南中的更改实例的安全组主题。
您可以在 Amazon Web Services Management Console 中集群的 Networking(联网)部分下,检查您集群的安全组。或者,您可以使用下面的 Amazon CLI 命令进行这项操作。使用此命令时,请将
替换为您的集群名称。my-cluster
aws eks describe-cluster --name
my-cluster
--query cluster.resourcesVpcConfig.clusterSecurityGroupId
第 2 步:创建 Fargate Pod 执行角色
当您的集群在 Amazon Fargate 上创建 Pods 时,在 Fargate 基础设施上运行的组件必须代表您调用 Amazon API。Amazon EKS Pod 执行角色提供执行此操作的 IAM 权限。要创建 Amazon Fargate Pod 执行角色,请参阅 Amazon EKS Pod 执行 IAM 角色。
注意
如果您使用 --fargate
选项通过 eksctl
创建了集群,则您的集群已具有 Pod 执行角色,您可以使用模式 eksctl-
在 IAM 控制台中找到它。同样,如果您使用 my-cluster
-FargatePodExecutionRole-ABCDEFGHIJKL
eksctl
创建 Fargate 配置文件,则 eksctl
会创建您的 Pod 执行角色(如果尚未创建)。
第 3 步:为集群创建 Fargate 配置文件
您必须先定义一个 Fargate 配置文件,以指定在启动时哪些 Pods 使用 Fargate,然后才能安排在集群中的 Fargate 上运行的 Pods。有关更多信息,请参阅 定义启动时将使用 Amazon Fargate 的 Pods。
注意
如果您使用 --fargate
选项通过 eksctl
创建了集群,则已经为您的集群创建了 Fargate 配置文件,而且其包含 kube-system
和 default
命名空间中所有 Pods 的选择器。使用以下程序为您想要用于 Fargate 的任何其他命名空间创建 Fargate 配置文件。
您可以使用 eksctl
或 Amazon Web Services Management Console 创建 Fargate 配置文件。
第 4 步:更新 CoreDNS
预设情况下,CoreDNS 配置为在 Amazon EKS 集群的 Amazon EC2 基础设施上运行。如果仅在集群的 Fargate 上运行 Pods,请完成以下步骤。
注意
如果使用 --fargate
选项用 eksctl
创建集群,则可以跳至 后续步骤。
使用以下命令为 CoreDNS 创建 Fargate 配置文件。将
替换为您的集群名称,将my-cluster
替换为您的账户 ID,将111122223333
替换为您的 Pod 执行角色名称,并将AmazonEKSFargatePodExecutionRole
、0000000000000001
和0000000000000002
替换为您的私有子网 ID。如果没有 Pod 执行角色,则必须首先创建一个。0000000000000003
重要
角色 ARN 不能包含
/
之外的路径。例如,如果您的角色名称为development/apps/my-role
,则需要在为该角色指定 ARN 时将其更改为my-role
。角色 ARN 的格式必须为arn:aws:iam::
。111122223333
:role/role-name
aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name
my-cluster
\ --pod-execution-role-arn arn:aws:iam::111122223333
:role/AmazonEKSFargatePodExecutionRole
\ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-0000000000000001
subnet-0000000000000002
subnet-0000000000000003
运行下面的命令从 CoreDNS Pods 中删除
eks.amazonaws.com/compute-type : ec2
注释。kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'
后续步骤
-
您可以开始使用以下工作流迁移现有应用程序来在 Fargate 上运行现有应用程序。
-
创建 Fargate 配置文件,该配置文件与您的应用程序的 Kubernetes 命名空间和 Kubernetes 标签相匹配。
-
删除并重新创建所有现有的 Pods,以便可以在 Fargate 上安排它们。例如,以下命令触发
coredns
部署的推广。您可以修改命名空间和部署类型以更新特定 Pods。kubectl rollout restart -n
kube-system
deployment coredns
-
-
部署 使用 Application Load Balancers 路由应用程序和 HTTP 流量 以允许在 Fargate 上运行的 Pods 的入口对象。
-
您可以使用 使用 Vertical Pod Autoscaler 调整容器组资源 为 Fargate Pods 设置正确的初始 CPU 和内存大小,然后使用 使用 Horizontal Pod Autoscaler 扩展容器组部署 来扩展这些 Pods。如果您希望 Vertical Pod Autoscaler 自动将 Pods 重新部署到具有更高 CPU 和内存组合的 Fargate,请将 Vertical Pod Autoscaler 的模式设置为
Auto
或Recreate
。这是为了确保正确的功能。有关更多信息,请参阅 GitHub 上的 Vertical Pod Autoscaler文档。 -
您可以按照这些说明设置 Amazon Distro for OpenTelemetry
(ADOT) 收集器,用于监控应用程序。