从 Cloud Console 登录集群

本页面介绍了如何从 Google Cloud Console 登录 Google Cloud 之外的已注册的 Kubernetes 集群。

登录已注册的集群后,您可以在 Cloud Console 中检查集群并获取其节点的详细信息,就像 Google Cloud 上的 Google Kubernetes Engine (GKE) 集群一样。您可以从多种身份验证方法中进行选择来登录集群,具体取决于您的项目和组织的需求。

如需通过命令行连接到已注册的集群,请参阅使用 Connect 网关连接到已注册的集群

已注册的集群简介

通过将 Kubernetes 集群注册到您的项目 Environ,您可以以统一的方法来查看和管理多个集群及其工作负载,包括在 Cloud Console 中同时查看它们。如需查看 Google Cloud 之外的集群,您必须启用 Anthos

Google Cloud 外部的托管 Anthos 群集(例如本地或 AWS 上)在创建时会自动注册到您的项目 environ 中。您必须手动注册附加集群。如果您不小心取消注册集群,或想要将其注册到其他项目,则可能还需要手动注册集群。如果您需要注册集群,请按照注册集群中的说明操作。

注册集群后,它将显示在 Cloud Console 的 GKE 和 Anthos 集群页面上。但是,如需查看 Google Cloud 之外的任何集群的节点和工作负载等详细信息,您需要登录集群并进行身份验证,如本指南的其余部分中所述。需要登录 Google Kubernetes Engine 集群列表的集群会显示一个橙色警告三角形,并提示您登录。

Google Kubernetes Engine 集群列表屏幕截图

如需详细了解 Environ,请参阅 Environ 简介。如需详细了解集群注册和 Connect 代理的工作原理,请参阅 Connect 文档

使用您的 Google Cloud 身份登录

通过此推荐选项,您可以使用项目和 GKE 集群所用的 Google Cloud 身份登录已注册的集群,并使用 Connect 服务将请求转发到集群的 API 服务器。如需详细了解 Connect 服务的工作原理,请参阅使用 Connect 网关连接到已注册的集群

在开始之前,请确保您的平台管理员已执行必要的设置,让您能够使用 Google Cloud 身份登录,包括授予所有必要的角色和基于角色的访问权限控制 (RBAC) 权限,以查看已注册的集群并进行身份验证。

控制台

如要使用 Google Cloud 身份登录集群,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 GKE 集群页面。

    转到 GKE 集群

  2. 在集群列表中,点击已注册的集群旁边的 操作,然后点击登录

  3. 选择使用您的 Google 身份登录

  4. 点击 Login(登录)。

使用不记名令牌登录

您可以使用不记名令牌登录已注册的集群。支持 Kubernetes 身份验证中指定的多种不记名令牌。最简单的方法是在集群中创建 Kubernetes 服务帐号 (KSA),并使用其不记名令牌登录。

所有登录集群的帐号至少需要具有集群中的以下 Kubernetes RBAC 角色:

准备工作

您或您的平台管理员需要对每个已注册的集群完成以下步骤一次。

创建并应用 cloud-console-reader RBAC 角色

想要在 Cloud Console 中查看集群资源的用户必须具有相关权限。您可以通过在集群中创建 ClusterRole RBAC 资源 cloud-console-reader 来定义这组权限。

cloud-console-reader 会向用户授予针对集群的节点、永久性卷和存储类别的 getlistwatch 权限,从而允许他们查看这些资源的详细信息。然后,您可以将此 ClusterRole 绑定到用户的服务帐号,如下一部分所述。

kubectl

如需创建并应用 cloud-console-reader ClusterRole,请运行以下命令:

  cat <<EOF > cloud-console-reader.yaml
  kind: ClusterRole
apiVersion: rbac.authorization.k8s.io/v1
metadata:
  name: cloud-console-reader
rules:
- apiGroups: [""]
  resources: ["nodes", "persistentvolumes"]
  verbs: ["get", "list", "watch"]
- apiGroups: ["storage.k8s.io"]
  resources: ["storageclasses"]
  verbs: ["get", "list", "watch"]
  EOF
  kubectl apply -f cloud-console-reader.yaml

设置服务帐号

建议您或集群管理员为登录集群的每个用户创建一个服务帐号。使用不记名令牌就像使用密码,因此每个用户都应该有自己的令牌。使用 KSA 的不记名令牌登录会导致所有操作都以 KSA 身份执行,且受 KSA 拥有的 RBAC 角色的限制。

KSA 至少需要保留集群中的以下 RBAC 角色:

创建和授权 KSA

kubectl

如要创建 KSA 并对其绑定权限,请按以下步骤操作:

  1. 创建 KSA 和 ClusterRoleBinding 资源,将 viewcloud-console-reader Kubernetes RBAC ClusterRoles 绑定到 KSA。

    KSA_NAME=KSA_NAME
    kubectl create serviceaccount ${KSA_NAME}
    kubectl create clusterrolebinding VIEW_BINDING_NAME \
    --clusterrole view --serviceaccount default:${KSA_NAME}
    kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \
    --clusterrole cloud-console-reader --serviceaccount default:${KSA_NAME}
    

    请替换以下内容:

    • KSA_NAME:您为 KSA 选择的名称
    • VIEW_BINDING_NAME:您为 view ClusterRoleBinding 资源选择的名称;您可以随意为其命名,但以 KSA 为其命名最简单。
    • CLOUD_CONSOLE_READER_BINDING_NAME:您为 cloud-console-reader ClusterRoleBinding 资源选择的名称;您还可以随意为其命名
  2. 根据服务帐号应具有的访问权限,为 KSA 绑定额外的角色。如需了解选项,请参阅 Kubernetes 默认角色

    例如,如果要从 Cloud Marketplace 部署 Kubernetes 应用,您必须将 cluster-admin 角色绑定到 KSA:

    kubectl create clusterrolebinding BINDING_NAME \
    --clusterrole cluster-admin --serviceaccount default:KSA_NAME
    

    BINDING_NAME 替换为服务帐号的集群角色绑定的名称。

授权其他帐号

kubectl

对于获得集群访问权限的其他所有用户或服务帐号,请创建 ClusterRoleBinding 资源以将 viewcloud-console-reader 角色绑定到它们的账户:

  1. 绑定 viewcloud-console-reader ClusterRoles

    ACCOUNT_NAME=ACCOUNT_NAME
    kubectl create clusterrolebinding VIEW_BINDING_NAME \
    --clusterrole view --serviceaccount default:${ACCOUNT_NAME}
    kubectl create clusterrolebinding CLOUD_CONSOLE_READER_BINDING_NAME \
    --clusterrole cloud-console-reader --serviceaccount default:${ACCOUNT_NAME}
    

    请替换以下内容:

    • ACCOUNT_NAME:Kubernetes 服务帐号
    • VIEW_BINDING_NAME:您为 view ClusterRoleBinding 资源选择的名称;您可以随意为其命名,但以用户或服务帐号为其命名最简单。
    • CLOUD_CONSOLE_READER_BINDING_NAME:您为 view ClusterRoleBinding 资源选择的名称;您还可以随意为其命名
  2. 绑定其他角色,具体取决于帐号应拥有的访问权限。如需了解选项,请参阅 Kubernetes 默认角色

    例如,如需绑定 cluster-admin 角色,请运行以下命令:

    kubectl create clusterrolebinding BINDING_NAME \
    --clusterrole cluster-admin --serviceaccount default:ACCOUNT_NAME
    

    BINDING_NAME 替换为服务帐号的集群角色绑定的名称。

获取 KSA 的不记名令牌

kubectl

要获取 KSA 的不记名令牌,请运行以下命令:

SECRET_NAME=$(kubectl get serviceaccount KSA_NAME -o jsonpath='{$.secrets[0].name}')
kubectl get secret ${SECRET_NAME} -o jsonpath='{$.data.token}' | base64 --decode

KSA_NAME 替换为您为 KSA 选择的名称。

在此命令的输出中,复制令牌并进行保存,以供下一部分使用。

登录集群

控制台

如需使用令牌登录集群,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 GKE 集群页面。

    转到 GKE 集群

  2. 在集群列表中,点击已注册的集群旁边的 操作,然后点击登录

  3. 选择令牌,然后使用 KSA 的不记名令牌填写令牌字段。

  4. 点击 Login(登录)。

使用基本身份验证登录

控制台

要使用基本身份验证登录集群,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 GKE 集群页面。

    转到 GKE 集群

  2. 在集群列表中,点击已注册的集群旁边的 操作,然后点击登录

  3. 选择基本身份验证,然后填写用户名密码字段。

  4. 点击 Login(登录)。

使用 OpenID Connect (OIDC) 登录

如果您的集群配置为使用 OIDC 身份提供商,则可以使用此身份从 Cloud Console 向集群进行身份验证。您可以参考以下指南,了解如何为 Anthos 集群设置 OIDC:

控制台

如需使用 OIDC 登录已配置的集群,请按以下步骤操作:

  1. 在 Cloud Console 中,转到 GKE 集群页面。

    转到 GKE 集群

  2. 在集群列表中,点击已注册的集群旁边的 操作,然后点击登录

  3. 选择使用为集群配置的身份提供商服务执行身份验证。系统会将您重定向到您的身份提供商,您可能需要登录或同意 Cloud Console 访问您的帐号。

  4. 点击 Login(登录)。

后续步骤