kubernetes中kubeconfig文件和context的使用

1.kubeconfig文件

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

注:用于配置集群访问的文件称为 kubeconfig 文件。这是引用配置文件的通用方法。这并不意味着有一个名为 kubeconfig 的文件

  默认情况下,kubectl 在 $HOME/.kube 目录下查找名为 config 的文件。 您可以通过设置 KUBECONFIG 环境变量或者设置 --kubeconfig参数来指定其他 kubeconfig 文件。

  k8s集群可以通过namespace和context的设置来对不同的工作组进行区分,使它们既可以共享同一个Kubernetes集群的服务,也能够互不干扰。

支持多集群、用户和身份认证机制

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

  • 正在运行的 kubelet 可能使用证书在进行认证。
  • 用户可能通过令牌进行认证。
  • 管理员可能拥有多个证书集合提供给各用户。

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

KUBECONFIG 环境变量

KUBECONFIG 环境变量包含一个 kubeconfig 文件列表。 对于 Linux 和 Mac,列表以冒号分隔。对于 Windows,列表以分号分隔。 KUBECONFIG 环境变量不是必要的。 如果 KUBECONFIG 环境变量不存在,kubectl 使用默认的 kubeconfig 文件,$HOME/.kube/config

设置临时环境变量

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

如果 KUBECONFIG 环境变量存在,kubectl 使用 KUBECONFIG 环境变量中列举的文件合并后的有效配置。

2.上下文(Context)

通过 kubeconfig 文件中的 context 元素,使用简便的名称来对访问参数进行分组。每个上下文都有三个参数:cluster、namespace 和 user。默认情况下,kubectl 命令行工具使用 当前上下文 中的参数与集群进行通信。

kubectl config 命令可以设置和使用context

选择当前上下文

kubectl config use-context

kubectl config --help 查看kubectl config 命令的使用说明

通过kubectl config 命令可以设置,使用,删除上下文等操作。

3.namespace和context事例:

创建development(开发)和production(生产)两个namespace和context

2)创建命名空间

namespace-development.yaml

apiVersion: v1
kind: Namespace
metadata:
 name: development

namespace-production.yaml

apiVersion: v1
kind: Namespace
metadata:
 name: production

$ kubectl create -f namespace-development.yaml

$ kubectl create -f namespace-production.yaml

2)创建上下文

创建ctx-dev上下文,指定其命名空间为development

$ kubectl config set-context ctx-dev --namespace=development --cluster=kubernetes --user=kubernetes-admin

创建ctx-prod上下文,指定其命名空间为production

$ kubectl config set-context ctx-prod --namespace=production --cluster=kubernetes --user=kubernetes-admin

注:–cluster=kubernetes --user=kubernetes-admin,cluster和user这里使用k8s集群本身的cluster和user,这样直接使用集群的密钥进行认证

$ kubectl config view

查看kubeconfig内容

img

从显示的信息中我们看到目前集群中有3个上下文,ctx-dev、ctx-prod和kubernetes-admin@kubernetes(k8s集群默认的上下文)。

从current-context看到当前的上下文为:kubernetes-admin@kubernetes

3)上下文切换

$ kubectl config use-context ctx-dev

img

在当前上下文创建一个RC

redis-slave-controller.yaml

    • apiVersion: v1
      kind: ReplicationController
      metadata:
       name: redis-slave
       labels:
        name: redis-slave
      spec:
       replicas: 2
       selector:
        name: redis-slave
       template:
        metadata:
         labels:
           name: redis-slave
        spec:
         containers:
      
         - name: slave
           image: kubeguide/guestbook-redis-slave
           ports:
           - containerPort: 6379
      

$ kubectl create -f redis-slave-controller.yaml

在当前上下文环境创建RC

$ kubectl get rc

查看对应的rc资源信息

img

切换到ctx-prod上下文

$ kubectl config use-context ctx-prod

img

查看当前上下文的资源信息

$ kubectl get rc

img

我们发现ctx-prod上下文环境中没有rc资源信息,所以在不同的上下文中,资源是相互隔离的,互不干扰。

4.kubectl config 常用命令

1.查看配置

kubectl config view
指定文件名查看
kubectl config --kubeconfig=config-demo view

2.创建集群,用户名和上下文

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

3.删除用户

kubectl --kubeconfig=config-demo config unset users.<name>

4.删除集群

kubectl --kubeconfig=config-demo config unset clusters.<name>

5.删除上下文

kubectl --kubeconfig=config-demo config unset contexts.<name>

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

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

7.设置当前上下文

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

8.切换上下文

kubectl config user-context ctx-dev
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值