使用 kubeconfig 文件组织集群访问
默认情况下,kubectl
在 $HOME/.kube
目录下查找名为 config
的文件。 您可以通过设置 KUBECONFIG
环境变量或者设置 --kubeconfig
参数来指定其他 kubeconfig 文件。
有关创建和指定 kubeconfig 文件的分步说明,请参阅 。
假设您有多个集群,并且您的用户和组件以多种方式进行身份认证。比如:
- 正在运行的 kubelet 可能使用证书在进行认证。
- 用户可能通过令牌进行认证。
- 管理员可能拥有多个证书集合提供给各用户。
使用 kubeconfig 文件,您可以组织集群、用户和命名空间。您还可以定义上下文,以便在集群和命名空间之间快速轻松地切换。
上下文(Context)
通过 kubeconfig 文件中的 context 元素,使用简便的名称来对访问参数进行分组。每个上下文都有三个参数:cluster、namespace 和 user。默认情况下,kubectl
命令行工具使用 当前上下文 中的参数与集群进行通信。
选择当前上下文
如果 KUBECONFIG
环境变量存在, 使用 KUBECONFIG
环境变量中列举的文件合并后的有效配置。
合并 kubeconfig 文件
要查看配置,输入以下命令:
kubectl config view
如前所述,输出可能来自 kubeconfig 文件,也可能是合并多个 kubeconfig 文件的结果。
以下是 kubectl
在合并 kubeconfig 文件时使用的规则。
有关设置 KUBECONFIG
环境变量的示例,请参阅 设置 KUBECONFIG 环境变量。
根据此链中的第一个匹配确定要使用的上下文。
- 如果存在,使用
--context
命令行参数。 - 使用合并的 kubeconfig 文件中的 。
- 如果存在,使用
这种场景下允许空上下文。
确定集群和用户。此时,可能有也可能没有上下文。根据此链中的第一个匹配确定集群和用户,这将运行两次:一次用于用户,一次用于集群。
- 如果存在,使用命令行参数:
--user
或者--cluster
。 - 如果上下文非空,从上下文中获取用户或集群。
- 如果存在,使用命令行参数:
这种场景下用户和集群可以为空。
确定要使用的实际用户信息。使用与集群信息相同的规则构建用户信息,但每个用户只允许一种身份认证技术:
- 如果存在:
--client-certificate
、--client-key
、--username
、--password
和--token
,使用命令行参数。 - 使用合并的 kubeconfig 文件中的
user
字段。 - 如果存在两种冲突技术,则配置无效。
- 如果存在:
对于仍然缺失的任何信息,使用其对应的默认值,并可能提示输入身份认证信息。