kubernetes配置(kubeconfig)对多集群的访问

摘要:
这是一种引用配置文件的通用方式,并不意味着存在一个名为kubeconfig的文件。创建名为config-exercise的目录。设置当前上下文:kubectlconfig--kubeconfig=config-demouse-contextdev-frontend现在当输入kubectl命令时,相应动作会应用于dev-frontend上下文中所列的集群和命名空间,同时,命令会使用dev-frontend上下文中所列用户的凭证。

配置对多集群的访问

本文展示如何使用配置文件来配置对多个集群的访问。 在将集群、用户和上下文定义在一个或多个配置文件中之后,用户可以使用kubectl config use-context命令快速地在集群之间进行切换。

注意:用于配置集群访问的文件有时被称为kubeconfig 文件。 这是一种引用配置文件的通用方式,并不意味着存在一个名为kubeconfig的文件。

  • Before you begin
  • 定义集群、用户和上下文
  • 创建第二个配置文件
  • 设置 KUBECONFIG 环境变量
  • 探索 $HOME/.kube 目录
  • 将 $HOME/.kube/config 追加到 KUBECONFIG 环境变量中
  • 清理
  • What’s next

Before you begin

需要安装kubectl命令行工具。

定义集群、用户和上下文

假设用户有两个集群,一个用于正式开发工作(development),一个用于其它临时用途(scratch)。 在development集群中,前端开发者在名为frontend的命名空间下工作, 存储开发者在名为storage的命名空间下工作。 在scratch集群中, 开发人员可能在默认命名空间下工作,也可能视情况创建附加的命名空间。 访问开发集群需要通过证书进行认证。 访问其它临时用途的集群需要通过用户名和密码进行认证。

创建名为config-exercise的目录。 在config-exercise目录中,创建名为config-demo的文件,其内容为:

apiVersion: v1
kind: Config
preferences: {}

clusters:
-cluster:
  name: development
-cluster:
  name: scratch

users:
-name: developer
-name: experimenter

contexts:
-context:
  name: dev-frontend
-context:
  name: dev-storage
-context:
  name: exp-scratch

配置文件描述了集群、用户名和上下文。config-demo文件中含有描述两个集群、两个用户和三个上下文的框架。

进入config-exercise目录。 输入以下命令,将群集详细信息添加到配置文件中:

kubectl config --kubeconfig=config-demo set-cluster development --server=https://1.2.3.4 --certificate-authority=fake-ca-file
kubectl config --kubeconfig=config-demo set-cluster scratch --server=https://5.6.7.8 --insecure-skip-tls-verify

将用户详细信息添加到配置文件中:

kubectl config --kubeconfig=config-demo set-credentials developer --client-certificate=fake-cert-file --client-key=fake-key-seefile
kubectl config --kubeconfig=config-demo set-credentials experimenter --username=exp --password=some-password

将上下文详细信息添加到配置文件中:

kubectl config --kubeconfig=config-demo set-context dev-frontend --cluster=development --namespace=frontend --user=developer
kubectl config --kubeconfig=config-demo set-context dev-storage --cluster=development --namespace=storage --user=developer
kubectl config --kubeconfig=config-demo set-context exp-scratch --cluster=scratch --namespace=default --user=experimenter

打开config-demo文件查看添加的详细信息。 也可以使用config view命令进行查看:

kubectl config --kubeconfig=config-demo view

输出展示了两个集群、两个用户和三个上下文:

apiVersion: v1
clusters:
-cluster:
    certificate-authority: fake-ca-fileserver: https://1.2.3.4
name: development
-cluster:
    insecure-skip-tls-verify: trueserver: https://5.6.7.8
name: scratch
contexts:
-context:
    cluster: development
    namespace: frontend
    user: developer
  name: dev-frontend
-context:
    cluster: development
    namespace: storage
    user: developer
  name: dev-storage
-context:
    cluster: scratch
    namespace: default
    user: experimenter
  name: exp-scratch
current-context: ""kind: Config
preferences: {}
users:
-name: developer
  user:
    client-certificate: fake-cert-fileclient-key: fake-key-file
-name: experimenter
  user:
    password: some-password
    username: exp

每个上下文包含三部分(集群、用户和命名空间),例如,dev-frontend上下文表明:使用developer用户的凭证来访问development集群的frontend命名空间。

设置当前上下文:

kubectl config --kubeconfig=config-demo use-context dev-frontend

现在当输入kubectl命令时,相应动作会应用于dev-frontend上下文中所列的集群和命名空间,同时,命令会使用dev-frontend上下文中所列用户的凭证。

使用--minify参数,来查看与当前上下文相关联的配置信息。

kubectl config --kubeconfig=config-demo view --minify

输出结果展示了dev-frontend上下文相关的配置信息:

apiVersion: v1
clusters:
-cluster:
    certificate-authority: fake-ca-fileserver: https://1.2.3.4
name: development
contexts:
-context:
    cluster: development
    namespace: frontend
    user: developer
  name: dev-frontend
current-context: dev-frontend
kind: Config
preferences: {}
users:
-name: developer
  user:
    client-certificate: fake-cert-fileclient-key: fake-key-file

现在假设用户希望在其它临时用途集群中工作一段时间。

将当前上下文更改为exp-scratch

kubectl config --kubeconfig=config-demo use-context exp-scratch

现在用户kubectl下达的任何命令都将应用于scratch集群的默认命名空间。 同时,命令会使用exp-scratch上下文中所列用户的凭证。

查看更新后的当前上下文exp-scratch相关的配置:

kubectl config --kubeconfig=config-demo view --minify

最后,假设用户希望在development集群中的storage命名空间下工作一段时间。

将当前上下文更改为dev-storage

kubectl config --kubeconfig=config-demo use-context dev-storage

查看更新后的当前上下文dev-storage相关的配置:

kubectl config --kubeconfig=config-demo view --minify

创建第二个配置文件

config-exercise目录中,创建名为config-demo-2的文件,其中包含以下内容:

apiVersion: v1
kind: Config
preferences: {}

contexts:
-context:
    cluster: development
    namespace: ramp
    user: developer
  name: dev-ramp-up

上述配置文件定义了一个新的上下文,名为dev-ramp-up

设置 KUBECONFIG 环境变量

查看是否有名为KUBECONFIG的环境变量。 如有,保存KUBECONFIG环境变量当前的值,以便稍后恢复。 例如,在 Linux 中:

export  KUBECONFIG_SAVED=$KUBECONFIG

KUBECONFIG环境变量是配置文件路径的列表,该列表在 Linux 和 Mac 中以冒号分隔,在 Windows 中以分号分隔。 如果有KUBECONFIG环境变量,请熟悉列表中的配置文件。

临时添加两条路径到KUBECONFIG环境变量中。 例如,在 Linux 中:

export  KUBECONFIG=$KUBECONFIG:config-demo:config-demo-2

config-exercise目录中输入以下命令:

kubectl config view

输出展示了KUBECONFIG环境变量中所列举的所有文件合并后的信息。 特别地, 注意合并信息中包含来自config-demo-2文件的dev-ramp-up上下文和来自config-demo文件的三个上下文:

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

更多关于 kubeconfig 文件如何合并的信息,请参考使用 kubeconfig 文件组织集群访问

探索 $HOME/.kube 目录

如果用户已经拥有一个集群,可以使用kubectl与集群进行交互。 那么很可能在$HOME/.kube目录下有一个名为config的文件。

进入$HOME/.kube目录, 看看那里有什么文件。 通常会有一个名为config的文件,目录中可能还有其他配置文件。 请简单地熟悉这些文件的内容。

将 $HOME/.kube/config 追加到 KUBECONFIG 环境变量中

如果有$HOME/.kube/config文件,并且还未列在KUBECONFIG环境变量中, 那么现在将它追加到KUBECONFIG环境变量中。 例如,在 Linux 中:

export KUBECONFIG=$KUBECONFIG:$HOME/.kube/config

在配置练习目录中输入以下命令,来查看当前KUBECONFIG环境变量中列举的所有文件合并后的配置信息:

kubectl config view

清理

KUBECONFIG环境变量还原为原始值。 例如,在 Linux 中:

export KUBECONFIG=$KUBECONFIG_SAVED

免责声明:文章转载自《kubernetes配置(kubeconfig)对多集群的访问》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇前端网页的懒加载准时下班的秘密:集成 GitLab && JIRA 实现自动化工作流下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Gradle 自定义插件

使用版本 5.6.2 插件被用来封装构建逻辑和一些通用配置。将可重复使用的构建逻辑和默认约定封装到插件里,以便于其他项目使用。 你可以使用你喜欢的语言开发插件,但是最终是要编译成字节码在 JVM 运行的。 Gradle 有两种插件,脚本插件和二进制插件。 关于插件的介绍,可以参考我的另一篇文章 Gradle 插件 这里讲的自定义插件是二进制插件,二进制插...

cscope的使用

Cscope 是一个非常灵巧的工具,但是它仍然需要使用您最顺手的编辑器去发挥它强大的功能。 幸运的是,Vim 已经包含了 Cscope 支持。 这篇指导主要介绍了 Vim 内在的 Cscope 支持,以及如何更好的通过已配置的 Map(a set of maps)实现搜索功能。 下面假设您有基本的使用类 vi 编辑器的技能 - 不过并不需要 Vim 更特殊...

CentOS 7 LDAP 安装配置

一,简介 二.安装配置 1. 安装openLDAP 服务 [root@labsys00206 yum.repos.d]# yum -y install openldap-servers openldap-clients [root@labsys00206 yum.repos.d]# cp /usr/share/openldap-servers/DB_CON...

nodejs中文件,目录的操作(1)

  首先,我们对fs文件系统分为两类操作,第一类是xxx方法,第二类是xxxSync方法。所有的fs操作几乎都是这两类,第一类是异步回调,第二类是同步等待。   A.对于文件的读写操作     a.完整性读写       1.fs.readFile(filename,[options],callback)//可以用来完整读取一个整的文件。       2....

Ubuntu下如何解压缩zip,tar,tar.gz,tar.bz2文件

转自:http://wangli-5665.diandian.com/post/2011-08-18/4039228 这么多年来,数据压缩对我们来说是非常有用的。无论是在邮件中发送的图片用的zip文件还是在服务器压缩数据文件,我们都可以让下载更容易或者有效 的节约磁盘空间。某些压缩格式有时允许我们以60%的比率(甚至更高)压缩文件。下面我将会给大家演示如何...

linux性能评估-内存案例实战篇

1.内存泄漏,该如何定位和处理 2.内存中的Buffer 和 Cache 在不同场景下的使用情况 场景 1:磁盘和文件写案例 场景 2:磁盘和文件读案例 1.内存泄漏,该如何定位和处理 机器配置:2 CPU,4GB 内存 预先安装 sysstat、Docker 以及 bcc 软件包,比如: # install sysstat docker s...