使用 kubeconfig 文件来组织有关集群、用户、命名空间和身份认证机制的信息。kubectl 命令行工具使用 kubeconfig 文件来查找选择集群所需的信息,并与集群的 API 服务器进行通信。
注意: 注意:用于配置集群访问的文件称为 *kubeconfig 文件*。这是引用配置文件的通用方法。这并不意味着有一个名为kubeconfig的文件
默认情况下,kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。您可以通过设置 KUBECONFIG 环境变量或者设置--kubeconfig参数来指定其他 kubeconfig 文件。
有关创建和指定 kubeconfig 文件的分步说明,请参阅配置对多集群的访问。
假设您有多个集群,并且您的用户和组件以多种方式进行身份认证。比如:
使用 kubeconfig 文件,您可以组织集群、用户和命名空间。您还可以定义上下文,以便在集群和命名空间之间快速轻松地切换。
通过 kubeconfig 文件中的 context 元素,使用简便的名称来对访问参数进行分组。每个上下文都有三个参数:cluster、namespace 和 user。默认情况下,kubectl 命令行工具使用 当前上下文 中的参数与集群进行通信。
选择当前上下文
kubectl config use-context
KUBECONFIG 环境变量包含一个 kubeconfig 文件列表。对于 Linux 和 Mac,列表以冒号分隔。对于 Windows,列表以分号分隔。KUBECONFIG 环境变量不是必要的。如果 KUBECONFIG 环境变量不存在,kubectl 使用默认的 kubeconfig 文件,$HOME/.kube/config。
如果 KUBECONFIG 环境变量存在,kubectl 使用 KUBECONFIG 环境变量中列举的文件合并后的有效配置。
要查看配置,输入以下命令:
kubectl config view如前所述,输出可能来自 kubeconfig 文件,也可能是合并多个 kubeconfig 文件的结果。
以下是 kubectl 在合并 kubeconfig 文件时使用的规则。
--kubeconfig 参数,则仅使用指定的文件。不进行合并。此参数只能使用一次。
否则,如果设置了 KUBECONFIG 环境变量,将它用作应合并的文件列表。根据以下规则合并 KUBECONFIG 环境变量中列出的文件:
current-context。示例:如果两个文件都指定了 red-user,则仅使用第一个文件的 red-user 中的值。即使第二个文件在 red-user 下有非冲突条目,也要丢弃它们。有关设置 KUBECONFIG 环境变量的示例,请参阅设置 KUBECONFIG 环境变量。
否则,使用默认的 kubeconfig 文件, $HOME/.kube/config,不进行合并。
根据此链中的第一个匹配确定要使用的上下文。
--context 命令行参数。current-context。这种场景下允许空上下文。
确定集群和用户。此时,可能有也可能没有上下文。根据此链中的第一个匹配确定集群和用户,这将运行两次:一次用于用户,一次用于集群。
--user 或者 --cluster。这种场景下用户和集群可以为空。
确定要使用的实际集群信息。此时,可能有也可能没有集群信息。基于此链构建每个集群信息;第一个匹配项会被采用:
--server、--certificate-authority 和 --insecure-skip-tls-verify,使用命令行参数。确定要使用的实际用户信息。使用与集群信息相同的规则构建用户信息,但每个用户只允许一种身份认证技术:
--client-certificate、--client-key、--username、--password 和 --token,使用命令行参数。user 字段。kubeconfig 文件中的文件和路径引用是相对于 kubeconfig 文件的位置。命令行上的文件引用是相当对于当前工作目录的。在 $HOME/.kube/config 中,相对路径按相对路径存储,绝对路径按绝对路径存储。
此页是否对您有帮助?
感谢反馈。如果您有一个关于如何使用 Kubernetes 的特定的、需要答案的问题,可以访问 Stack Overflow. 在 GitHub 仓库上登记新的问题 报告问题 或者 提出改进建议.