Amazon Fargate 配置文件
您必须先定义至少一个 Fargate 配置文件,以指定在启动时哪些 pods 使用 Fargate,然后在集群中的 Fargate 上安排 pods。
作为管理员,您可以使用 Fargate 配置文件声明哪些 pods 在 Fargate 上运行。您可以通过配置文件的选择器执行此操作。您最多可以为每个配置文件添加五个选择器。每个选择器都必须包含一个命名空间。选择器还可以包含标签。标注字段由多个可选键值对组成。与选择器匹配的容器组(pod)被安排在 Fargate 上。容器组(pod)使用选择器中指定的命名空间和标签进行匹配。如果定义了没有标签的命名空间选择器,Amazon EKS 会尝试使用配置文件将在该命名空间中运行的所有 pods 安排到 Fargate。如果待安排的 pod 与 Fargate 配置文件中的任意一个选择器匹配,则该 pod 将被安排到 Fargate 上。
如果 pod 匹配多个 Fargate 配置文件,您可以指定 pod 使用的配置文件,方法为将以下 Kubernetes 标签添加到 pod 规范:eks.amazonaws.com/fargate-profile:
。pod 必须匹配该配置文件中的选择器才能被安排到 Fargate 上。Kubernetes 亲和力/反亲和力规则不适用,Amazon EKS Fargate pods 不需要这些规则。my-fargate-profile
创建 Fargate 配置文件时,必须指定 pod 执行角色。此执行角色适用于使用配置文件在 Fargate 基础设施上运行的 Amazon EKS 组件。此角色将被添加到集群的 Kubernetes 基于角色的访问控制kubelet
可以注册到您的 Amazon EKS 集群,并在您的集群中作为节点显示。pod 执行角色还提供对 Fargate 基础设施的 IAM 权限,以允许对 Amazon ECR 映像存储库进行读取访问。有关更多信息,请参阅Amazon EKS pod 执行 IAM 角色。
您无法更改 Fargate 配置文件。但是,您可以创建新的更新配置文件来替换现有配置文件,然后删除原始配置文件。
注意
删除配置文件后,使用 Fargate 配置文件运行的任何 pods 都会停止并进入待处理状态。
如果集群中有任何 Fargate 配置文件处于 DELETING
状态,您必须等待删除该 Fargate 配置文件后,才能在该集群中创建其他配置文件。
Amazon EKS 和 Fargate 在 Fargate 配置文件定义的每个子网中分布 pods。但是,最终可能会出现不均匀的分布。如果您必须获得均匀的分布,请使用两个 Fargate 配置文件。在您希望部署两个副本并且不希望造成任何停机的方案中,均匀的分布非常重要。我们建议每个配置文件只有一个子网。
Fargate 配置文件组件
Fargate 配置文件中包含以下组件。
-
容器组(pod)执行角色:当您的集群在 Amazon Fargate 上创建 pods 时,在 Fargate 基础设施上运行的
kubelet
必须代表您调用 Amazon API。例如,它需要调用才能从 Amazon ECR 提取容器镜像。Amazon EKS pod 执行角色提供执行此操作的 IAM 权限。创建 Fargate 配置文件时,必须指定要用于 pods 的 pod 执行角色。此角色将被添加到集群的 Kubernetes 基于角色的访问控制
(RBAC)以进行授权。这允许在 Fargate 基础设施上运行的 kubelet
注册到您的 Amazon EKS 集群,以便它可以作为节点显示在您的集群中。有关更多信息,请参阅Amazon EKS pod 执行 IAM 角色。 -
子网 – 将 pods 启动到其中的使用此配置文件的子网的 ID。目前,在 Fargate 上运行的 pods 没有分配公有 IP 地址。因此,此参数仅接受私有子网(没有到互联网网关的直接路由)。
-
选择器 – 要匹配 pods 以使用此 Fargate 配置文件的选择器。您最多可以在 Fargate 配置文件中指定五个选择器。选择器具有以下组件:
-
命名空间 – 您必须为选择器指定命名空间。选择器仅匹配在此命名空间中创建的 pods。但是,您可以创建多个选择器来定位多个命名空间。
-
标签 – 您可以选择指定 Kubernetes 标签来匹配选择器。选择器只匹配具有在选择器中指定的所有标签的 pods。
-
Fargate 配置文件通配符
除了 Kubernetes 允许的字符外,您可以在命名空间、标签键和标签值的选择器标准中使用
和 *
:?
-
表示无、一个或多个字符。例如,*
可以表示prod*
prod
和prod-metrics
。 -
表示单个字符(例如,?
可以表示value?
valuea
)。但是,它不能表示value
和value-a
,因为?
只能准确地表示一个字符。
这些通配符可以在任何位置组合使用(例如,
、prod*
以及 *dev
)。不支持其他通配符和模式匹配形式,例如正则表达式。frontend*?
如果容器组(pod)规范中有多个配置文件与命名空间和标签匹配,Fargate 会根据配置文件名称的字母数字排序来选取配置文件。例如,如果配置文件 A(名称为 beta-workload
)和配置文件 B(名称为 prod-workload
)都有匹配的选择器可供要启动的容器组(pod)使用,Fargate 会为容器组(pod)选取配置文件 A(beta-workload
)。容器组(pod)具有标签,显示容器组(pod)上有配置文件 A(例如 eks.amazonaws.com/fargate-profile=beta-workload
)。
如果要将现有 Fargate 容器组(pod)迁移到使用通配符的新配置文件中,有两种方法可执行此操作:
-
使用匹配的选择器创建一个新的配置文件,然后删除旧的配置文件。标有旧配置文件的容器组(pod)将被重新安排到新的匹配配置文件中。
-
若要迁移工作负载,但不确定每个 Fargate 容器组(pod)上有哪些 Fargate 标签,则可以使用以下方法。创建一个新的配置文件,首先在同一个集群上的配置文件中按字母数字排序配置文件名称。然后,回收需要迁移到新配置文件的 Fargate 容器组(pod)。
创建 Fargate 配置文件
本主题介绍如何创建 Fargate 配置文件。您还必须已经创建了要用于 Fargate 配置文件的 pod 执行角色。有关更多信息,请参阅Amazon EKS pod 执行 IAM 角色。在 Fargate 上运行的容器组(pod)仅在私有子网上受支持(对 Amazon Web Services 具有 NAT 网关访问权限,但没有到互联网网关的直接路由)。因此,您的集群的 VPC 必须有可用的私有子网。您可以使用 eksctl
或 Amazon Web Services Management Console 创建配置文件。选择包含要用来创建 Fargate 配置文件的工具名称的选项卡。
此过程需要 eksctl
版本 0.135.0
或更高版本。可以使用以下命令来查看您的版本:
eksctl version
有关如何安装或升级 eksctl
的说明,请参阅 安装或更新 eksctl。
删除 Fargate 配置文件
本主题介绍如何删除 Fargate 配置文件。
当您删除 Fargate 配置文件时,使用该配置文件安排到 Fargate 的所有 pods 都将被删除。如果这些 pods 与另一个 Fargate 配置文件匹配,则将使用该配置文件在 Fargate 上安排它们。如果它们不再匹配任何 Fargate 配置文件,则不会被安排到 Fargate,并仍可能处于待处理状态。
集群中一次只能有一个 Fargate 配置文件处于 DELETING
状态。等待 Fargate 配置文件完成删除,然后才能删除该集群中的任何其他配置文件。
您可以使用 eksctl
、Amazon Web Services Management Console 或 Amazon CLI 来删除配置文件。请选择包含要用于删除您的配置文件的工具名称的选项卡。