kubeconfig 简介

Kubernetes 配置文件

Kubernetes 使用名为 kubeconfig 的 YAML 文件来存储 kubectl 的集群身份验证信息。kubeconfig 包含 kubectl 在运行命令时引用的上下文列表。默认情况下,该文件保存在 $HOME/.kube/config

上下文是一组访问参数。每个上下文都包含一个 Kubernetes 集群、一个用户和一个命名空间。当前上下文是 kubectl 当前的默认集群:所有 kubectl 命令都针对该集群运行

创建集群后,请按照生成 kubeconfig 条目将集群上下文添加到本地 kubeconfig

专用端点

所有集群都有一个规范端点。此端点公开了 kubectl 和其他服务用于通过 TCP 端口 443 与集群控制平面通信的 Kubernetes API 服务器。在 AWS 上,此端点是一个仅在集群内可解析的 DNS 名称,例如 gke-abcdefghijk-cp-ffabcdef123456.elb.us-west-1.amazonaws.com。此端点无法通过公共互联网访问。您可以从 gcloud container aws clusters describe 命令输出中的 endpoint 字段获取专用集群端点地址。

连接网关端点

默认情况下,gcloud container aws clusters get-credentials 命令会生成使用 Connect 网关kubeconfig。借助此 kubeconfigkubectl 使用 Connect,然后代表您安全地将流量转发到专用端点。使用 Connect 网关时,端点类似于 https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME,其中 PROJECT_NUMBER 是您的项目编号,CLUSTER_NAME 是集群名称。

如果您通过 VPC 访问集群的专用端点,则可以直接连接到专用端点。如需使用专用端点生成 kubeconfig,请使用 gcloud container aws clusters get-credentials --private-endpoint 命令。

关于 kubectl 的身份验证

通过验证 kubectl 提供的凭据,并检索与用户或服务账号身份关联的电子邮件地址,所有 GKE on AWS 都配置为接受 Google Cloud 用户和服务账号身份。因此,这些账号的凭据必须包含 userinfo.email OAuth 范围才能成功进行身份验证。

当您使用 gcloud 为新集群或现有集群设置环境的 kubeconfig 时,gcloud 会为 kubectl 提供 gcloud 自身使用的相同凭据。例如,如果使用 gcloud auth login,您的个人凭据会提供给 kubectl,包括 userinfo.email 范围。这样,GKE on AWS 就可对 kubectl 客户端进行身份验证。

当用户或 Google Cloud 服务账号经过身份验证后,还必须获得授权才能对 GKE on AWS 执行任何操作。集群管理员负责设置适当的基于角色的访问权限控制来配置授权。