将第三方集群连接到 Google Cloud(上一代)

借助 GKE 关联的集群,您可以在 Google Cloud 控制台中查看现有 Kubernetes 集群以及 GKE 集群,并对这些集群启用多项 GKE Enterprise 功能,包括使用 Config Sync 进行集中配置控制。

支持的 Kubernetes 集群

您可以将包含 x86 节点的任何一致的 Kubernetes 集群连接到舰队,并在 Google Cloud 控制台中使用 GKE 集群进行查看。

以下集群类型和版本已通过 Google 进行验证。如需了解连接的集群支持的 GKE Enterprise 功能,请参阅 Anthos 组件和多云端支持

关联的集群类型 Kubernetes 版本
Red Hat OpenShift Kubernetes Engine (OKE) 4.9、4.10 1.23、1.24
Red Hat OpenShift Container Platform (OCP) 4.9、4.10 1.23、1.24
Rancher Kubernetes Engine (RKE) 1.3.8 1.23、1.24
KIND 0.12 1.23、1.24
K3s 1.20 1.20
K3d 4.4.3 1.20

前期准备

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Anthos API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Anthos API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 请参阅队列注册前提条件,以确保您拥有相关权限并已启用用于注册集群的 API。
  13. 请参阅准备工作指南,了解关联 Google Cloud 外部集群的具体要求,包括集群类型可能需要的任何特殊设置步骤。

注册另行关联的集群

您必须向项目舰队注册要用于 GKE Enterprise 的所有集群。舰队提供了一种对 Kubernetes 集群进行逻辑分组和标准化的方法,从而简化基础架构的管理。您可以一起在 Google Cloud 控制台中浏览和管理同一舰队中的集群,许多 GKE Enterprise 和 Google Cloud 组件都使用身份相同性和命名空间相同性等舰队概念来简化多个集群的管理。如需详细了解舰队及其支持的功能,请参阅我们的舰队管理指南

您有权在这些集群上启用和使用 GKE Enterprise 功能,并且可以从 GKE 功能页面在舰队级层管理一些 GKE Enterprise 功能。GKE Enterprise 费用仅适用于您注册的集群。

设置身份

所有关联的集群都需要 Connect 代理的身份才能向 Google 进行身份验证。如果您的集群满足要求,您可以在启用身份验证的情况下使用舰队 Workload Identity 集群进行注册。启用了此功能的集群会使用舰队范围内的队列工作负载身份池中的身份。请参阅使用队列 Workload Identity,详细了解队列 Workload Identity 的工作原理以及使用该服务的优势。

如果您无法使用舰队 Workload Identity,则注册关联集群时需要使用 Google Cloud 服务账号进行身份验证。我们建议您为要关联的每个集群创建一个新的服务账号。如需为具有相应角色的集群创建服务账号,请按照使用 gcloud 创建 Google Cloud 服务账号中的说明操作。创建服务账号后,您可以按照下一部分的说明使用带有服务账号凭据(密钥文件)的 JSON 文件来注册集群。

注册集群

我们建议您在注册集群后获取集群的成员资格状态,以确保它正确连接到 Google Cloud。如果注册出现任何问题,请参阅我们的问题排查指南

gcloud

运行以下命令:

gcloud container fleet memberships register MEMBERSHIP_NAME \
   --context=KUBECONFIG_CONTEXT \
   --kubeconfig=KUBECONFIG_PATH \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

替换以下内容:

  • MEMBERSHIP_NAME:您选择用来唯一表示要在舰队中注册的集群的成员资格名称。
  • SERVICE_ACCOUNT_KEY_PATH:作为“前提条件”的一部分予以下载的服务账号私钥 JSON 文件的本地文件路径。此服务账号密钥作为 Secret(名为 creds-gcp)存储在 gke-connect 命名空间中。
  • KUBECONFIG_CONTEXT:所注册集群的集群上下文,它显示在 kubeconfig 文件中。您可以通过运行 kubectl config current-context 从命令行获取此值。
  • KUBECONFIG_PATH:存储包含所注册集群的条目的 kubeconfig 的本地文件路径。如果设置了此环境变量,则默认为 $KUBECONFIG;否则默认为 $HOME/.kube/config

向舰队 Workload Identity 注册另行关联的集群

如需注册启用了舰队 Workload Identity 的关联集群,请运行以下命令。如需详细了解哪些关联集群类型可以使用此功能以及任何其他要求,请参阅关联集群前提条件

gcloud container fleet memberships register MEMBERSHIP_NAME \
   --context=KUBECONFIG_CONTEXT \
   --kubeconfig=KUBECONFIG_PATH \
   --enable-workload-identity \
   --has-private-issuer

控制台

生成注册命令

您可以使用 Google Cloud 控制台帮助生成 gcloud 注册命令来注册您的集群(仅使用服务账号)。

如需注册集群,请执行以下操作:

  1. 在 Google Cloud 控制台中,进入 Google Kubernetes Engine 集群概览页面。

    转到 GKE 集群

  2. 点击注册现有集群

  3. 点击添加外部集群

  4. 集群名称字段中输入要注册的集群的名称。

  5. 可选:为您的集群添加 Google Cloud 标签。

  6. 点击生成注册命令

  7. 在 Cloud Shell 或其他保存了服务账号凭据的位置,修改并运行显示在页面上的 gcloud 命令。您需要指定以下值:

    • CLUSTER_CONTEXT 是 kubeconfig 文件中显示的集群上下文。您可以通过运行 kubectl config current-context 从命令行获取此值。
    • KUBECONFIG_PATH 是存储 kubeconfig 文件的本地文件路径。如果设置了此环境变量,则默认为 $KUBECONFIG;否则默认为 $HOME/.kube/config
    • LOCAL_KEY_PATH 是服务账号密钥文件的路径。

    运行此命令会在用户集群中部署 Connect Agent。在 Connect Agent 连接到 Google Cloud 并且您的集群注册后,页面上会显示成功消息。

  8. 点击设置标签;如果未设置任何标签,则点击跳过

高级注册选项(仅限命令行)

下载 Connect Agent 清单

如需在不部署代理的情况下下载 Connect Agent 安装清单(例如,如果您要在安装之前检查或修改清单),请将 --manifest-output-file 标志传入 gcloud container fleet memberships register 命令。例如:

--manifest-output-file=[MANIFEST_FILE_PATH]

其中 [MANIFEST_FILE_PATH] 是您想要存储 Connect Agent 安装清单的本地文件路径。

使用此选项将不会将 Connect Agent 部署到集群中。如需部署 Connect Agent,请手动将下载的清单应用到集群。

使用代理服务器

如需配置代理服务器,请将 --proxy 标志传入 gcloud container fleet memberships register 命令。例如:

--proxy=[URL]

其中,[URL] 是代理地址。

Connect Agent 仅支持基于 Connect 的 HTTP 和 HTTPS 代理,并接受 IP 地址和主机名。请务必指定与网址中的代理类型对应的协议。例如,传入 HTTPS 主机名:

--proxy=https://mycorpproxy.com:443

除非另行指定,否则 Connect Agent 会使用端口 3128 进行代理。

如果您的代理需要授权,请确保传入凭据,例如:

--proxy=http://user:password@10.10.10.10:8888

在具有 Windows 和 Linux 节点的集群中安装 Connect Agent

Connect Agent 必须在 Linux 节点上运行。如果您要在具有 Linux 和 Windows 节点的混合集群中安装,可以通过向部署定义添加适当的节点选择器来确保 Connect Agent 部署到 Linux 节点上。

运行以下命令以使用适当的节点选择器更新部署:

kubectl patch deployment \
$(kubectl get deployment -o=jsonpath='{.items[*].metadata.name}' -n gke-connect) \
-p '{"spec":{"template":{"spec":{"nodeSelector":{"kubernetes.io/os":"linux"}}}}}' -n gke-connect

如需验证更新是否成功,请运行以下命令:

kubectl get deployment -o=jsonpath='{.items[].spec.template.spec.nodeSelector}' -n gke-connect

该命令应返回以下内容:

{"kubernetes.io/os":"linux"}

问题排查

如果您在此设置过程中遇到任何问题,请参阅舰队创建问题排查指南

在关联集群上启用 GKE Enterprise 功能

注册集群后,您可以在集群上为应用启用可用的 GKE Enterprise 功能。仅已验证集群类型支持这些功能。您可以在版本和升级支持中查看这些类型当前支持的功能版本。

以下指南介绍了如何在集群上启用受支持的功能:

如需了解所有 GKE Enterprise 组件(包括教程、参考资料等)的完整文档集,请参阅 GKE Enterprise 组件

访问另行关联的集群

注册另行关联的集群后,它将显示在 Google Cloud 控制台中的 GKE 和 Anthos 集群页面中。但是,要查看节点和工作负载等更多详细信息,您需要登录集群并进行身份验证。如需从 Google Cloud 控制台登录已另行关联的集群,请按照从 Google Cloud 控制台登录集群中的说明操作。根据您选择的身份验证方法,请注意您或平台管理员可能需要进行一些额外设置,然后才能让其他用户登录集群。

如需使用 Google Cloud 身份从命令行访问连接的集群,请参阅使用 Connect Gateway 连接到已注册的集群

如需使用现有的第三方身份提供方(仅限 AWS 集群上的 EKS,预览版功能)向关联的集群进行身份验证,请参阅为集群设置 GKE Identity Service 以及使用 GKE Identity Service 访问集群

后续步骤