写点什么

35 K8S 之 kubeconfig 配置文件

  • 2021 年 12 月 05 日
  • 本文字数:974 字

    阅读完需:约 3 分钟

35 K8S之kubeconfig配置文件

Kubernetes 设计了一种称为 kubeconfig 的配置文件,它保存有接入一到多个 Kubernetes 集群的相关配置信息,并允许管理员按需在各配置间灵活切换。客户端程序可通过默认路径、--kubeconfig 选项或者 KUBECONFIG 环境变量自定义要加载的 kubeconfig 文件,从而能够在每次的访问请求中可认证到目标 APIServer。


kubeconfig 文件中,各集群的接入端点以列表形式定义在 clusters 配置段中,每个列表项代表一个 Kubernetes 集群,并拥有名称标识;各身份认证信息(credentials)定义在 users 配置段中,每个列表项代表一个能够认证到某 Kubernetes 集群的凭据。将身份凭据与集群分开定义以便复用,具体使用时还要以 context(上下文)在二者之间按需建立映射关系,各 context 以列表形式定义在 contexts 配置段中,而当前使用的映射关系则定义在 current-context 配置段中。格式如下


使用 kubeadm 初始化 Kubernetes 集群过程中,在 Master 节点上生成的/etc/kubernetes/admin.conf 文件就是一个 kubeconfig 格式的文件,它由 kubeadm init 命令自动生成,可由 kubectl 加载后接入当前集群的 API Server。


kubectl config 的常用子命令有如下:

view:打印 kubeconfig 文件内容。

set-cluster:设定新的集群信息,以单独的列表项保存于 clusters 配置段。

set-credentials:设置认证凭据,保存为 users 配置段的一个列表项。

set-context:设置新的上下文信息,保存为 contexts 配置段的一个列表项。

use-context:设定 current-context 配置段,确定当前以哪个用户的身份接入到哪个集群之中。

delete-cluster:删除 clusters 中指定的列表项。

delete-context:删除 contexts 中指定的列表项。

get-clusters:获取 clusters 中定义的集群列表。

get-contexts:获取 contexts 中定义的上下文列表。


一个完整 kubeconfig 配置的定义至少应该包括集群、身份凭据、上下文及当前上下文 4 项,但在保存有集群和身份凭据的现有 kubeconfig 文件基础上添加新的上下文时,可能只需要提供身份凭据而复用已有的集群定义,具体的操作步骤要按实际情况进行判定。


当 kubectl 引用了拥有两个及以上 context 的 kubeconfig 文件时,可随时通过 kubectl config use-context 命令在不同上下文之间切换,它们可能使用不同的身份凭据接入相同的集群或不同的集群之上。


若将两个文件路径以冒号分隔并赋值给 KUBECONFIG 环境变量,也能够让 kubectlconfig 一次加载多个文件信息,优先级由高到低为各文件自左而右的次序


发布于: 5 小时前阅读数: 8
用户头像

InfoQ签约作者 2018.11.30 加入

热爱生活,收藏美好,专注技术,持续成长

评论

发布
暂无评论
35 K8S之kubeconfig配置文件