install/config-kubectl.md
参考文档: Kubernetes文档 Organizing Cluster Access Using kubeconfig Files、Configure Access to Multiple Clusters
kubectl 命令行工具从配置文件kubeconfig中查找用于调用 API Server 接口的信息:
kubeconfig 并不是一个文件的名字,而是 kubectl 配置文件的统称
默认情况下,kubectl 读取 $HOME/.kube/config 作为配置文件。您可以通过两种方式为 kubectl 指定配置文件:
KUBECONFIG--kubeconfig可以在一个或多个kubeconfig文件中配置多个集群的访问信息,并使用 kubectl config use-context 命令切换要访问哪个集群。本文描述了如何配置 kubectl 以访问多个集群。
::: tip
kubectl的版本号必须大于等于集群的版本号,执行命令 kubectl version 可查看 kubectl 版本
:::
可以在 KUBECONFIG 环境变量中配置多个 kubeconfig 文件:
: 分隔; 分隔当 KUBECONFIG 指定了多个 kubeconfig 文件时,kubectl会自动合并所有文件中的配置内容。您可以将每个集群的访问信息存储到一个文件中,并将该文件加入到 KUBECONFIG 环境变量中。
KUBECONFIG 环境变量并不是必须配置的,如果该环境变量不存在, kubectl 将使用默认位置的 kubeconfig 文件,即 $HOME/.kube/config。
前面提到,kubectl会自动合并 KUBECONFIG 指定的多个文件,执行以下指令,可以查看最终生效的结果:
kubectl config view
合并时的规则如下:
--kubeconfig 参数,则只使用该参数指定的 kubeconfig 文件,不会进行合并KUBECONFIG 的情况下,该环境变量中的所有文件将被合并使用:
kubectl config use-context 指令后,在第一个文件中保存 current-context 字段red-user,将只使用列表中第一个定义了 red-user 的内容,所有后面定义的 red-user 都将被忽略--kubeconfig 参数,又没指定 KUBECONFIG 环境变量,则使用默认的配置文件 $HOME/.kube/config,此时也无需合并当您通过 KUBECONFIG 环境变量指定了多个集群的访问配置文件时,执行 kubectl config view 指令,输出结果如下所示:
contexts 字段包含了多个访问集群的 上下文,每个上下文指定了一个 name,并指定了该 上下文 要访问的集群名称cluster,集群中的名称空间namespace,使用哪个用户去访问user。current-context 字段指定了当前生效的 上下文contexts:
- context:
cluster: development
namespace: frontend
user: developer
name: dev-frontend
- context:
cluster: development
namespace: ramp
user: developer
name: dev-ramp-up
- context:
cluster: development
namespace: storage
user: developer
name: dev-storage
- context:
cluster: scratch
namespace: default
user: experimenter
name: exp-scratch
current-context: dev-frontend
kind: Config
users:
...
执行 kubectl config get-contexts 命令,可以查看可用的 上下文 列表,其中第一列带 * 的为当前使用的 上下文,输出如下所示:
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
dev-frontend development developer frontend
* dev-ramp-up development developer ramp
dev-storage development developer storage
exp-scratch scratch experimenter default
执行 kubectl config use-context dev-storage 命令,可以切换到另外一个 上下文