为 kubectl 配置集群访问权限

本页面介绍如何为 GKE on Azure 的 kubectl 命令行工具配置集群访问权限。

概览

如需访问 GKE on Azure,您需要配置 kubectl。您可以通过在 Kubernetes 的 kubeconfig 文件中设置当前上下文来为 kubectl 设置默认集群。此外,您可以使用 --cluster 标志针对特定集群运行 kubectl 命令。

如需详细了解 kubeconfig 和集群端点,请参阅关于 Kubeconfig

准备工作

如果您需要使用 Connect Gateway 访问 kubectl,那么如果管理员用户不是 Project Owner,您则必须向他们授予通过 gcloud CLI 将 kubectl 与身份搭配使用部分所述的 IAM 角色。

检查当前 kubeconfig

本部分介绍如何检查当前的 kubeconfig

查看 kubeconfig 上下文

如需查看环境的 kubeconfig 及其包含的所有上下文,请运行以下命令:

kubectl config view

该命令返回已生成 kubeconfig 条目所对应的所有集群的列表。如果列出了 GKE on Azure 集群,您可以在当前环境中对其运行 kubectl 命令。否则,您需要为该集群生成 kubeconfig 条目

查看 kubectl 的当前上下文

要查看 kubectl 命令行工具使用的当前上下文,请运行以下命令:

kubectl config current-context

kubectl 会输出当前上下文的名称。

生成 kubeconfig 条目

要对 GKE 集群运行 kubectl 命令,您需要生成 kubeconfig 条目。生成 kubeconfig 的方式取决于您要连接到集群的方式。我们建议您使用 Connect 网关。如果您要通过专用端点进行连接,则需要与您的 Azure 虚拟网络中的控制平面端点建立连接和路由。集群的 kube-apiserver 是控制平面的一部分。为了将请求直接发送到专用端点,您可能需要拓展防火墙规则。如需详细了解如何连接到控制平面,请参阅网络安全群组

Connect Gateway

gcloud container azure clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION

请替换以下内容:

  • CLUSTER_NAME:您的集群的名称
  • GOOGLE_CLOUD_LOCATION:管理 GKE on Azure 的 Google Cloud 区域或可用区

专用端点

注意:要连接到专用端点,您需要连接到集群的控制平面。请参阅连接到您的集群的控制平面

gcloud container azure clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --private-endpoint

替换以下内容:

  • CLUSTER_NAME:您的集群的名称
  • GOOGLE_CLOUD_LOCATION:管理 GKE on Azure 的 Google Cloud 区域或可用区

使用多个集群

本部分介绍如何将 kubectl 与多个 GKE 集群搭配使用。

为 kubectl 命令设置默认集群

您可以通过运行以下命令将 kubectl 的当前上下文切换为该集群:

gcloud container azure clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \

替换以下内容:

  • CLUSTER_NAME:您的集群的名称
  • GOOGLE_CLOUD_LOCATION:管理 GKE on Azure 的 Google Cloud 区域或可用区

举例来说,假设一个项目有 cluster-1cluster-2 这两个集群。当前上下文为 cluster-2。如需将当前上下文从 cluster-2 切换为 cluster-1,请运行以下命令:

gcloud container azure clusters get-credentials cluster-1 \
  --location GOOGLE_CLOUD_LOCATION

针对特定集群运行单条 kubectl 命令

您可以针对特定集群运行单独的 kubectl 命令,只需将 kubeconfig 中显示的该集群名称作为 --cluster 标志的参数传入即可。

举例来说,假设一个环境中有 cluster-1cluster-2 这两个集群,当前上下文为 cluster-1。您不希望更改当前上下文。如需在不更改当前上下文的情况下获取 cluster-2 上的 pod 对象的列表,请运行以下命令:

kubectl get pod --cluster cluster-2