舰队创建概览

本页面简要介绍了创建舰队的工作原理,以及不同集群类型的详细信息。如需详细了解如何手动向舰队注册集群以及手动注册的前提条件,请参阅详细的舰队创建指南

您可以通过以下方式创建舰队:

  • 通过注册集群:当您在还没有舰队的项目中注册任何类型的集群时,系统会创建一个新的舰队,并且该项目将成为舰队宿主项目。一个项目最多只能有一个舰队。根据集群类型和集群位置,注册可能会在创建集群时使用集群配置中指定的注册详细信息自动进行,或者您可能需要手动将集群添加到舰队。
  • 通过创建指定舰队:您可以在注册集群之前创建空舰队
  • 通过升级到 Google Kubernetes Engine (GKE) Enterprise:当您从 Google Cloud 控制台启用 GKE Enterprise 时,系统会自动为您的项目创建舰队,并且默认情况下,项目中所有的现有 Google Cloud 集群会自动注册到该舰队。 新集群也可以在创建时注册到舰队。

每个舰队都有一个名称,该名称显示在 Google Cloud 控制台中。默认情况下,这是带有 fleet 前缀的舰队宿主项目的 ID。如果您想为舰队使用更具描述性的名称,则可以在创建舰队时指定名称。

关于舰队成员资格

将集群注册到舰队后,它将成为舰队成员。由于舰队可以包含来自多个项目和环境的集群,因此您必须确保添加到舰队中的每个集群都具有唯一名称。有时,这在命令和文档中称为集群的舰队成员资格名称。通常,集群的舰队成员资格名称是其常规集群名称,但如果舰队中已经存在另一个具有该名称的集群,则您可能需要在注册时创建一个新名称(例如,通过在原始集群名称上附加或前置一个限定符)。如果您尝试使用现有集群向舰队注册集群,则注册将失败。

舰队成员资格位置

每个舰队集群的成员资格由舰队服务管理。此服务的位置可以是全球级的,也可以是区域级的,具体取决于集群注册到舰队的方式。

  • 对于使用 Google Cloud CLI 注册的 Google Cloud 上的 GKE 集群,成员资格由在集群所在区域中运行的舰队服务实例管理。这可为构建您自己的高可用性服务(包括使用某些服务的区域级实例,例如 Connect 网关)提供最短延迟时间。区域级成员资格管理还支持例如数据由于监管原因不能离开特定区域这样的情况。您无法选择从其他区域管理集群。

  • 使用 Config Connector 注册的 Google Cloud 上的 GKE 集群可以由全球级或区域级舰队服务管理。

  • 所有其他舰队成员目前使用全球级舰队服务进行管理。

当集群仍然是舰队成员时,您无法更改其成员资格位置。如果您有一个具有全球级舰队成员资格的 GKE 集群,并且想要更改为从其区域进行管理,你必须取消注册该集群,然后使用 gcloud 或 Config Connector 将其重新注册到同一舰队。

如需查看集群的成员资格位置(例如要用作命令参数,或者您正在考虑将集群切换为区域级成员资格),请执行以下操作之一:

  • 列出所有舰队成员。每个集群的成员资格位置都显示在输出的 LOCATION 列中。

     gcloud container fleet memberships list \
       --project=PROJECT_ID
    
  • 运行以下命令以 describe 集群的成员资格,包括其成员资格位置。将 MEMBERSHIP_NAME 替换为您的集群的成员资格名称。

     gcloud container fleet memberships describe MEMBERSHIP_NAME \
       --project=PROJECT_ID
    

团队范围

舰队成员集群可与其舰队中的一个或多个团队范围相关联。团队范围是一种企业级舰队级层结构,用于将舰队集群子集与特定应用团队相关联,可用于启用一系列基于团队的功能,包括访问权限控制、团队限定范围的可观测性以及集群升级发布序列

Google Cloud 上的 GKE 集群

您必须明确注册 Google Cloud 上的 GKE 集群才能将其添加到舰队中。如需注册现有集群,您可以选择以下注册选项之一:从 Google Cloud 控制台的“集群”页面中快速注册、通过 gcloud CLI 从命令行注册或者使用 Terraform 或 Config Connector 进行声明式注册。您还可以在创建集群期间使用 Google Cloud 控制台、gcloud CLI 或 Terraform 注册新集群。如果您启用了 GKE Enterprise,则可以使用已为您配置的一些舰队级设置和功能创建集群。如需详细了解这些选项,请参阅将 Google Cloud 上的集群注册到您的舰队

可以将 Google Cloud 上的集群注册到其当前项目中的舰队或(在具有一些额外的权限的情况下)注册到其他项目中的舰队。

Google Cloud 外部的集群

如果您已启用 GKE Enterprise,则可以将 Google Cloud 外部的集群添加到您的舰队,并一起查看和管理不同环境中的集群。如本部分其余内容中所述,Google Cloud 外部的 GKE 集群主要在创建集群时自动注册到舰队。如果您想要将第三方 Kubernetes 集群添加到您的舰队,则必须手动注册第三方 Kubernetes 集群

注册 Google Cloud 外部的集群会在集群上安装 Connect Agent,以处理集群与 Google Cloud 项目之间的通信。您可以参阅连接代理概览,详细了解 Connect Agent 的工作原理。

GKE on Google Distributed Cloud(本地)

GKE on VMwareGKE on Bare Metal 集群会在集群创建时自动注册到您选择的舰队,并使用舰队宿主项目以及相关集群配置文件中指定的其他注册详细信息。如果您使用的是 GKE on VMware,请注意从 1.13 版开始,管理员集群用户集群都必须注册。对于 1.13 之前的版本,如果您想将管理员集群作为舰队的一部分进行管理,您可以选择将注册详细信息添加到管理员集群配置。 您可以注册未注册的管理员集群,具体方法是更新其集群配置文件并使用 gkectl 更新集群。您无法取消注册或手动注册 GKE on VMware。

其他公有云上的 GKE

使用 GKE Multi-Cloud API 创建的 AWS 和 Azure 上的 GKE 集群会在集群创建时自动注册到您选择的舰队,并使用在运行相关 gcloud cluster create 命令时指定的舰队宿主项目。由于使用 GKE Multi-Cloud 创建的集群已经拥有一个与之关联的项目(启用了 API 的项目),因此如果要将这些集群注册到另一个项目中的舰队,您需要在集群创建时进行一些额外设置。使用 GKE Multi-Cloud API 创建的集群无法取消注册或手动注册。

第三方 Kubernetes 集群(附加的集群)

如果您具有想要作为舰队成员进行管理的现有第三方 Kubernetes 集群(例如 EKS、AKS 或本地分发),则可以将这些集群以及任何 GKE 集群一起注册到项目舰队。您可以使用 GKE Multi-Cloud API 将包含 x86 节点的任何一致的 Kubernetes 集群连接到舰队。例如 Amazon EKS、Azure AKS 以及其他符合 CNCF 和我们要求的集群。作为 GKE Enterprise 价格的一部分,您注册的任何第三方集群将按 vCPU 收费。

如需注册关联的集群,请参阅以下指南:

将集群迁移到其他舰队

目前不建议在舰队之间移动已注册的集群(取消注册然后重新注册),因为这可能会导致非预期或不希望的行为:例如,您的工作负载舰队的舰队 Workload Identity 将发生变化,从而可能导致请求被阻止和服务中断。建议方法是在希望工作负载驻留在其中的舰队中创建新集群,然后将工作负载从旧集群移动到新集群。

(可选)创建空舰队

默认情况下,当您首次在项目中注册集群时,或者在 Google Cloud 控制台中启用 GKE Enterprise 时,系统会在舰队宿主项目中创建新舰队。如果要在注册任何集群之前创建新的指定舰队(例如为团队访问权限设置范围),请运行以下命令:

gcloud alpha container fleet create --display-name=NAME [--project=FLEET_HOST_PROJECT_ID]

如果未指定 display-name,则新舰队具有基于其舰队宿主项目名称的默认显示名称。

查看舰队

如果您的组织有多个舰队,您可以使用 Google Cloud 控制台中 GKE Enterprise 导航菜单顶部的舰队下拉列表,快速查看和浏览这些舰队。在此列表中选择一个舰队后,Google Cloud 控制台会自动切换到其舰队宿主项目。

后续步骤