kubernetes配置kubeconfig访问集群

使用kubeconfig文件来组织关于集群,用户,名称空间和身份验证机制的信息。 kubectl命令行工具使用kubeconfig文件来查找选择群集并与群集的API服务器进行通信所需的信息。

默认情况下 kubectl使用的配置文件名称是在$HOME/.kube目录下 config文件,可以通过设置环境变量KUBECONFIG或者--kubeconfig指定其他的配置文件
详细配置内容信息请参考configure-access-multiple-clusters

支持多个群集,用户和认证机制

假设您有多个群集,并且您的用户和组件以各种方式进行身份验证。 例如:

  1. 正在运行的kubelet可能使用证书进行身份验证。
  2. 用户可能使用令牌进行身份验证。
  3. 管理员可能拥有一组证书,这些证书可以提供给单个用户。

使用kubeconfig文件,您可以组织您的群集,用户和名称空间。 您还可以定义上下文以快速轻松地在群集和名称空间之间切换。

上下文(Context)
kubeconfig文件中的上下文元素用于以方便的名称对访问参数进行分组。 每个上下文有三个参数:集群,命名空间和用户。 默认情况下,kubectl命令行工具使用当前上下文中的参数与集群进行通信。

可以使用以下命令设置当前的上下文

kubectl config use-context

环境变量KUBECONFIG

如果环境变量KUBECONFIG存在,那么就使用该环境变量KUBECONFIG里面的值,如果不存在该环境变量KUBECONFIG,那么默认就是使用$HOME/.kube/config文件

整合配置文件
查看配置内容

kubectl config view

以下是kubectl在合并kubeconfig文件时使用的规则:

一. 如果设置了--kubeconfig标志,则只使用指定的文件。 不要合并。 该标志只允许有一个实例。
二. 如果设置了KUBECONFIG环境变量,则将其用作应该合并的文件列表。 根据以下规则合并KUBECONFIG环境变量中列出的文件:

  1. 忽略空文件名。
  2. 为内容无法反序列化的文件生成错误。
  3. 优先使用第一个文件设置特定值或映射键。
    切勿更改数值或映射键。
    示例:保留第一个文件的上下文以设置当前上下文。 示例:如果两个文件指定一个red-user,则仅使用第一个文件的red-user的值。 即使第二个文件在red-user下有非冲突条目,也要丢弃它们,无法生效。
root@fabric-cli config-exercise]# kubectl config --help
Modify kubeconfig files using subcommands like "kubectl config set
current-context my-context"

The loading order follows these rules:

  1. If the --kubeconfig flag is set, then only that file is loaded.  The flag
may only be set once and no merging takes place.
  2. If $KUBECONFIG environment variable is set, then it is used a list of paths
(normal path delimitting rules for your system).  These paths are merged.  When
a value is modified, it is modified in the file that defines the stanza.  When a
value is created, it is created in the first file that exists.  If no files in
the chain exist, then it creates the last file in the list.
  3. Otherwise, ${HOME}/.kube/config is used and no merging takes place.

Available Commands:
  current-context 显示当前的上下文
  delete-cluster  删除 kubeconfig 文件中指定的集群
  delete-context  删除 kubeconfig 文件中指定的上下文
  get-clusters    显示 kubeconfig 文件中定义的集群
  get-contexts    描述一个或多个上下文
  rename-context  Renames a context from the kubeconfig file.
  set             设置 kubeconfig 文件中的一个单个值
  set-cluster     设置 kubeconfig 文件中的一个集群条目
  set-context     设置 kubeconfig 文件中的一个上下文条目
  set-credentials 设置 kubeconfig 文件中的一个用户条目
  unset           取消设置 kubeconfig 文件中的一个单个值
  use-context     设置 kubeconfig 文件中的当前上下文
  view            显示合并的 kubeconfig 配置或一个指定的 kubeconfig
文件

Usage:
  kubectl config SUBCOMMAND [options]

Use "kubectl  --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all
commands).

指定上下文

如果退出,请使用–context命令行标志。

kubectl config --context xxx

合并的kubeconfig文件中的current-context。

kubectl config current-context 

定义集群

kubectl config --cluster

定义用户

kubectl config --user

确定集群信息,使用以下参数

--server, --certificate-authority, --insecure-skip-tls-verify

确定用户信息,使用以下参数

--client-certificate, --client-key, --username, --password, --token

这边博客纯粹是翻译,还没经过处理,详情请前往organize-cluster-access-kubeconfig

参考
organize-cluster-access-kubeconfig

你可能感兴趣的:(kubetnetes)