Amazon Fargate 配置文件 - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon Fargate 配置文件

您必须先定义至少一个 Fargate 配置文件,以指定 Pod 在启动时哪些 Pod 应该使用 Fargate,然后才能安排在集群中的 Fargate 上运行的 Pod。

Fargate 配置文件允许管理员声明哪些 Pod 在 Fargate 上运行。此声明通过配置文件的选择器完成。每个配置文件最多可以有五个包含命名空间和可选标签的选择器。您必须为每个选择器定义一个命名空间。标注字段由多个可选键值对组成。与选择器匹配的 Pod(通过匹配选择器的命名空间和选择器中指定的所有标签)将被安排到 Fargate 上。如果定义了没有任何标签的命名空间选择器,Amazon EKS 会尝试使用配置文件将在该命名空间中运行的所有 Pod 安排到 Fargate。如果待安排的 Pod 与 Fargate 配置文件中的任意一个选择器都匹配,则该 Pod 将被安排到 Fargate 上。

如果某个 Pod 匹配多个 Fargate 配置文件,则 Amazon EKS 将随机选择其中一个 Fargate 配置文件。在这种情况下,您可以通过将以下 Kubernetes 标注添加到 Pod 规格 来指定 Pod 应使用哪个配置文件: eks.amazonaws.com/fargate-profile: fargate_profile_name. 但是,Pod 仍必须匹配该配置文件中的选择器才能被安排到 Fargate 上。不考虑 Kubernetes 亲和力/反亲和力规则,Amazon EKS Fargate Pod(一组容器)不需要这些规则。

创建 Fargate 配置文件时,必须使用配置文件为在 Fargate 基础设施上运行的 Amazon EKS 组件指定 Pod 执行角色。此角色将被添加到集群的 Kubernetes 基于角色的访问控制 (RBAC) 中以进行授权,以使在 Fargate 基础设施上运行的 kubelet 可以向 Amazon EKS 集群注册,并可作为节点显示在集群中。Pod 执行角色还提供对 Fargate 基础设施的 IAM 权限,以允许对 Amazon ECR 映像存储库进行读取访问。有关更多信息,请参阅 Amazon EKS 容器执行 IAM 角色

Fargate 配置文件是不可变的。不过,您可以创建新的更新配置文件来替换现有配置文件,然后在更新配置文件创建完成后删除原始配置文件。

注意

删除配置文件后,使用 Fargate 配置文件运行的任何 Pod 都将停止并进入待处理状态。

如果集群中有任何 Fargate 配置文件处于 DELETING 状态,您必须等待该 Fargate 配置文件删除完毕,然后才能在该集群中创建任何其他配置文件。

Amazon EKS 和 Fargate 尝试在 Fargate 配置文件定义的每个子网中分布 Pod(一组容器),但最终可能会出现不均匀的分布。如果必须均匀分布(例如部署两个副本而不停机),则需要使用两个 Fargate 配置文件。每个配置文件应仅具有一个子网。

Fargate 配置文件组件

Fargate 配置文件中包含以下组件。

  • Pod 执行角色:当您的集群在 Amazon Fargate 上创建 Pod 时,在 Fargate 基础设施上运行的 kubelet 需要代表您调用 Amazon API。例如,这是为了从 Amazon ECR 中提取容器镜像。Amazon EKS Pod 执行角色提供执行此操作的 IAM 权限。

    创建 Fargate 配置文件时,必须指定要用于 Pod 的 Pod 执行角色。此角色将被添加到集群的 Kubernetes 基于角色的访问控制 (RBAC) 以进行授权。这允许在 Fargate 基础设施上运行的 kubelet 注册到您的 Amazon EKS 集群,以便它可以作为节点显示在您的集群中。有关更多信息,请参阅 Amazon EKS 容器执行 IAM 角色

  • 子网 – 将 Pod 启动到其中的使用此配置文件的子网的 ID。目前,在 Fargate 上运行的容器组没有分配公有 IP 地址。因此,此参数仅接受私有子网(没有到互联网网关的直接路由)。

  • 选择器 – 要匹配 Pod 以使用此 Fargate 配置文件的选择器。每个选择器都必须有一个关联的命名空间。您还可以选择为命名空间指定标签。最多可以在 Fargate 配置文件中指定五个选择器。一个 Pod 只需匹配一个选择器即可使用 Fargate 配置文件运行。

  • 命名空间 – 您必须为选择器指定命名空间。选择器只匹配在此命名空间中创建的 Pod,不过,您可以创建多个选择器来定位多个命名空间。

  • 标签 – 您可以选择指定 Kubernetes 标签来匹配选择器。选择器只匹配具有在选择器中指定的所有标签的 Pod。

创建 Fargate 配置文件

本主题可帮助您创建 Fargate 配置文件。AmazonAmazon EKS 上的 Fargate 在除中国(北京)、中国(宁夏)、Amazon GovCloud(美国东部)和 Amazon GovCloud(美国西部)以外的所有 Amazon EKS 区域推出。您还必须已经创建了要用于 Fargate 配置文件的 Pod 执行角色。有关更多信息,请参阅 Amazon EKS 容器执行 IAM 角色。在 Fargate 上运行的 Pod 仅在私有子网上受支持(对Amazon服务具有 NAT 网关访问权限,但没有到互联网网关的直接路由),因此您的集群的 VPC 必须具有可用的私有子网。您可以使用 eksctl 或 Amazon Web Services Management Console 创建配置文件。选择包含要用来创建 Fargate 配置文件的工具名称的选项卡。

此过程需要 eksctl 版本 0.84.0 或更高版本。可以使用以下命令来查看您的版本:

eksctl version

有关安装或升级 eksctl 的更多信息,请参阅 安装或升级 eksctl

eksctl

利用 eksctl 创建 Fargate 配置文件

使用以下 eksctl 命令创建 Fargate 配置文件,并将所有 example-value 替换为您自己的值。您需要指定命名空间。但是,--labels 选项不是必选。

eksctl create fargateprofile \ --cluster my-cluster \ --name fargate_profile_name \ --namespace kubernetes_namespace \ --labels key=value
Amazon Web Services Management Console

使用 Amazon Web Services Management Console 为集群创建 Fargate 配置文件

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 选择要为其创建 Fargate 配置文件的集群。

  3. 选择 Configuration 选项卡。

  4. 请选择 Compute(计算)选项卡。

  5. Fargate profiles(Fargate 配置文件)下,选择 Add Fargate profile(添加 Fargate 配置文件)。

  6. Configure Fargate profile(配置 Fargate 配置文件)页面上,执行以下操作:

    1. 对于 Name(名称),为 Fargate 配置文件输入唯一名称,例如 my-profile

    2. 对于 Pod execution role(Pod 执行角色),选择要用于您的 Fargate 配置文件的 Pod 执行角色。将仅显示具有 eks-fargate-pods.amazonaws.com 服务委托人的 IAM 角色。如果您未看到列出的任何角色,则必须创建一个角色。有关更多信息,请参阅 Amazon EKS 容器执行 IAM 角色

    3. 选择 Subnets(子网)下拉列表并取消选择名称中带有 Public 的所有子网。Fargate 上运行的 Pod 仅支持私有子网。

    4. 对于 Tags(标签),您可以自行选择是否为 Fargate 配置文件添加标签。这些标签不会传播到与配置文件关联的其他资源,如 Pod。

    5. 选择 Next (下一步)

  7. 请在 Configure pod selection(配置容器选择)页面上,执行以下操作:

    1. 对于 Namespace (命名空间),输入与 Pod 匹配的命名空间,如 kube-systemdefault

    2. (可选)将 Kubernetes 标签添加到选择器中。特别是将它们添加到指定命名空间中的容器组需要匹配的那个。例如,您可以将标注 infrastructure: fargate 添加到选择器中,以便只有指定命名空间中也具有 infrastructure: fargate Kubernetes 标注的 Pod 与选择器匹配。

    3. 选择 Next (下一步)

  8. Review and create(查看和创建)页面上,查看 Fargate 配置文件的信息,然后选择 Create(创建)

删除 Fargate 配置文件

本主题可帮助您删除 Fargate 配置文件。

当您删除 Fargate 配置文件时,使用该配置文件安排到 Fargate 的所有 Pod 都将被删除。如果这些 Pod 与另一个 Fargate 配置文件匹配,则将使用该配置文件在 Fargate 上安排它们。如果它们不再匹配任何 Fargate 配置文件,则不会被安排到 Fargate,并仍可能处于待处理状态。

集群中一次只能有一个 Fargate 配置文件处于 DELETING 状态。等待 Fargate 配置文件完成删除,然后才能删除该集群中的任何其他配置文件。

您可以使用 eksctl、Amazon Web Services Management Console 或 Amazon CLI 来删除配置文件。请选择包含要用于删除您的配置文件的工具名称的选项卡。

eksctl

使用 eksctl 删除 Fargate 配置文件

使用以下命令从集群中删除配置文件。请将每个 example-value 替换为您自己的值。

eksctl delete fargateprofile --name my-profile --cluster my-cluster
Amazon Web Services Management Console

利用 Amazon Web Services Management Console 从集群中删除 Fargate 配置文件

  1. 从以下位置打开 Amazon EKS 控制台:https://console.aws.amazon.com/eks/home#/clusters

  2. 在左侧导航窗格中,选择 Amazon EKS Clusters(集群)。在集群列表中,选择要从中删除 Fargate 配置文件的集群。

  3. 请选择 Configuration(配置)选项卡,然后选择 Compute(计算)选项卡。

  4. 选择要删除的 Fargate 配置文件,然后选择 Delete(删除)。

  5. Delete Fargate Profile(删除 Fargate 配置文件)页面上,键入配置文件的名称,然后选择 Delete(删除)。

Amazon CLI

使用 Amazon CLI 删除 Fargate 配置文件

使用以下命令从集群中删除配置文件。请将每个 example-value 替换为您自己的值。

aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster