为 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-1
和 cluster-2
这两个集群。当前上下文为 cluster-2
。如需将当前上下文从 cluster-2
切换为 cluster-1
,请运行以下命令:
gcloud container azure clusters get-credentials cluster-1 \
--location GOOGLE_CLOUD_LOCATION
针对特定集群运行单条 kubectl 命令
您可以针对特定集群运行单独的 kubectl
命令,只需将 kubeconfig
中显示的该集群名称作为 --cluster
标志的参数传入即可。
举例来说,假设一个环境中有 cluster-1
和 cluster-2
这两个集群,当前上下文为 cluster-1
。您不希望更改当前上下文。如需在不更改当前上下文的情况下获取 cluster-2
上的 pod 对象的列表,请运行以下命令:
kubectl get pod --cluster cluster-2