配置对多个Kubernetes集群的访问

本文介绍了如何配置和管理对多个Kubernetes集群的访问。通过编写脚本从kubeconfig文件中提取密钥,并将生成的文件统一存放,然后编辑kubeconfig文件定义集群、用户和上下文,再设置KUBECONFIG环境变量,实现快速在集群间切换。
摘要由CSDN通过智能技术生成

配置对多个Kubernetes集群的访问

一、背景

​ 当使用 kubectl 连接k8s集群时,kubectl 默认会在 $HOME/.kube 目录下查找名为 config 的文件,该文件用于配置对k8s集群的访问,下文统称为 config 文件。

​ 通过设置 KUBECONFIG 环境变量可以指定使用的 config 文件。

​ 同时当使用 kubectl 时可以通过使用 --kubeconfig 参数引用不同k8s集群的 config 文件来达到访问不同集群的目的,但显然每次使用命令时额外添加一个参数的方式不太友好。

​ 通过扩展k8s提供的 config 文件,将集群、用户和上下文定义在一个 config 文件中之后,用户可以使用 kubectl config use-context 命令快速地在集群之间进行切换。

二、配置多集群访问示例

2.1 使用脚本提取密钥

​ 在原始的 .kube/config 文件中,ca.crt 等内容较多在多集群时显示混乱,将其换成 ca.crt 这种文件形式便于区分。下面的python脚本 k2file.py 将某集群 config 文件中的 ca.crt 等内容另存至对应的 ca.crt 文件中。

#!/usr/bin/env python
#!encoding=utf-8

## 解析kubectl的config文件, 生成ca.crt, client.crt和client.key文件.
## 用法: python k2file.py /etc/kubernetes/admin.conf

## 有个问题: script_dir 总是获取 k2file.py 脚本所在的目录, 而非执行脚本所在的目录.
## 而使用 open() 打开并创建文件时, 如果不写绝对路径, 就会使用以脚本所在位置的相对路径.
## 需要使用 os.getcwd() 代替, 这样得到的是执行脚本时所在的目录, 而非脚本本身所在的目录.

## python2内置yaml模块, python3则需要使用pip安装PyYAML
import yaml
import sys
import os
import base64

def parse_yaml(target_file, curr_dir):
    # 打开yaml文件
    file = open(target_file, 'r')
    file_data = file.read()
    file.close()

    # 将字符串转化为字典或列表
    data = yaml.safe_load(file_data)
    ca_crt = data['clusters'][0]['cluster']['certificate-authority-data']
    client_crt = data['users'][0]['user']['client-certificate-data']
    client_key = data['users'][0][
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值