注册集群

本页面介绍了如何手动向 Google Cloud 注册 Kubernetes 集群。

准备工作

在首次向 Google Cloud 注册 Kubernetes 集群之前,请先满足以下网络、Google Cloud 和 Kubernetes 前提条件

  1. 确保网络连接。如果您要注册在 Google Cloud 上运行的 GKE 集群,则默认情况下已建立网络连接。

  2. Google Cloud 配置

  3. Kubernetes 配置

注册集群

gcloud

注册 GKE on Google Cloud 集群

注册集群时,您可以将 Connect Agent 配置为使用 Workload Identity 或使用 Google Cloud 服务帐号

使用 Workload Identity 注册集群(推荐)

  1. 确定是否已在 GKE 集群上启用 Workload Identity

    运行以下命令以列出您的集群所属的 Workload Identity 池

    gcloud container clusters describe GKE_CLUSTER --format="value(workloadIdentityConfig.workloadPool)"
    

    请替换以下内容:

    • GKE_CLUSTER:当前项目的 GKE 集群的 name

    如果您看到类似如下所示的结果,则表示您的 GKE 集群已启用 Workload Identity,您可以直接转到下面的“注册集群”。

    GKE_PROJECT_ID.svc.id.goog

    如果没有结果,则表示 GKE 集群未启用 Workload Identity。请继续在 GKE 集群上启用 Workload Identity,然后再注册集群。

  2. 启用 Workload Identity

    仔细按照链接的说明启用 GKE Workload Identity。如果启用 GKE Workload Identity,则系统会更改启用后创建的任何新节点池的身份验证行为,这可能会影响依赖于附加到节点池中 Compute Engine 实例的服务帐号的应用。

  3. 注册集群

    运行以下命令之一来注册集群:

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-uri=GKE_URI \
     --enable-workload-identity
    

    gcloud beta container hub memberships register MEMBERSHIP_NAME \
     --gke-cluster=GKE_CLUSTER \
     --enable-workload-identity
    

    请替换以下内容:

    • MEMBERSHIP_NAME:您选择用来唯一表示要在 Hub 中注册的集群的成员资格名称。
    • GKE_URI:GKE 集群的 URI,例如 https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster。您可以通过运行 gcloud container clusters list --uri 来获取该 URI。
    • GKE_CLUSTER:当前项目中的 GKE 集群的 location/name。该位置可以是可用区或区域,例如 us-central1-a/my-gke-cluster

使用服务帐号注册集群

运行以下任一命令:

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-uri=GKE_URI \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

gcloud container hub memberships register MEMBERSHIP_NAME \
   --gke-cluster=GKE_CLUSTER \
   --service-account-key-file=SERVICE_ACCOUNT_KEY_PATH

请替换以下内容:

  • MEMBERSHIP_NAME:您选择用来唯一表示要在 Hub 中注册的集群的成员资格名称。
  • SERVICE_ACCOUNT_KEY_PATH:作为“前提条件”的一部分予以下载的服务帐号私钥 JSON 文件的本地文件路径。此服务帐号密钥作为 Secret(名为 creds-gcp)存储在 gke-connect 命名空间中。
  • GKE_URI:GKE 集群的 URI,例如 https://container.googleapis.com/v1/projects/my-gke-project/locations/us-central1-a/clusters/my-gke-cluster。您可以通过运行 gcloud container clusters list --uri 来获取该 URI。
  • GKE_CLUSTER:当前项目中的 GKE 集群的 location/name。该位置可以是可用区或区域,例如 us-central1-a/my-gke-cluster

注册非 GKE 集群、Anthos clusters on AWS 集群或 Anthos clusters on VMware 集群

运行以下命令:

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

请替换以下内容:

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

控制台

注册 Anthos on Google Cloud 集群

以下说明适用于启用了 Anthos 的项目中的 Google Cloud 上的 GKE 集群。

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

  1. 在 Google Cloud Console 中,转到 Anthos 集群页面。此页面会显示您注册的所有集群。

    转到“Anthos 集群”页面

  2. 点击注册现有集群

  3. 点击要添加到 Environ 的未注册集群旁边的注册

  4. 指定要在注册集群时使用的服务帐号。我们建议您保留默认行为并创建新的服务帐号。

    • 如果您选择创建新的服务帐号,请执行以下操作:
      • 指定服务帐号 ID,以识别您的新服务帐号。
      • 选择是否要将服务帐号密钥作为 JSON 文件下载。建议您保留默认行为并下载密钥,因为您以后将无法再下载该密钥。
    • 如果您选择使用现有服务帐号,请以 JSON 格式粘贴帐号的服务帐号密钥
  5. 可选:为集群指定新的成员资格名称。默认情况下,集群的成员资格名称就是当前名称。但是,如果您的集群名称在您的项目中不是唯一的,则必须指定一个新的唯一成员资格名称,因为所有集群的 Environ 都需要一个唯一标识符。

  6. 如需注册集群,请点击提交

注册任何其他集群

以下说明适用于非 GKE 集群、Anthos clusters on AWS 集群、Anthos clusters on VMware 集群以及任何其他集群。

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

  1. 在 Google Cloud Console 中,转到 Anthos 集群页面。此页面会显示您注册的所有集群。

    转到“Anthos 集群”页面

  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 hub memberships register 命令。例如:

--manifest-output-file=[MANIFEST_FILE_PATH]

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

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

使用代理服务器

如需配置代理服务器,请将 --proxy 标志传入 gcloud container hub 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"}

后续步骤