Kubernetes 中 kubeconfig 的用法

2020 年 1 月 03 日

Kubernetes 中 kubeconfig 的用法

用于配置集群访问信息的文件叫作 kubeconfig 文件,在开启了 TLS 的集群中,每次与集群交互时都需要身份认证,生产环境一般使用证书进行认证,其认证所需要的信息会放在 kubeconfig 文件中。此外,K8s 的组件都可以使用 kubeconfig 连接 apiserver,client-go 、operator、helm 等其他组件也使用 kubeconfig 访问 apiserver。


kubeconfig 配置文件的生成


kubeconfig 的一个示例:



apiVersion 和 kind 标识客户端解析器的版本和模式,不应手动编辑。preferences 指定可选(和当前未使用)的 kubectl 首选项。


1、clusters 模块


cluster 中包含 kubernetes 集群的端点数据,包括 kubernetes apiserver 的完整 url 以及集群的证书颁发机构。


可以使用 kubectl config set-cluster 添加或修改 cluster 条目。


2、users 模块


user 定义用于向 kubernetes 集群进行身份验证的客户端凭据。


可用凭证有 client-certificate、client-key、token 和 username/password。


username/password 和 token 是二者只能选择一个,但 client-certificate 和 client-key 可以分别与它们组合。


可以使用 kubectl config set-credentials 添加或者修改 user 条目。


3、contexts 模块


context 定义了一个命名的 cluster、user、namespace 元组,用于使用提供的认证信息和命名空间将请求发送到指定的集群。


三个都是可选的,仅使用 cluster、user、namespace 之一指定上下文,或指定 none。


未指定的值或在加载的 kubeconfig 中没有相应条目的命名值将被替换为默认值。


加载和合并 kubeconfig 文件的规则很简单,但有很多,具体可以查看加载和合并 kubeconfig 规则。


可以使用 kubectl config set-context 添加或修改上下文条目。


4、current-context 模块


current-context 是作为 cluster、user、namespace 元组的 key,当 kubectl 从该文件中加载配置的时候会被默认使用。


可以在 kubectl 命令行里覆盖这些值,通过分别传入–context=CONTEXT、 --cluster=CLUSTER、–user=USER 和 --namespace=NAMESPACE。


以上示例中若不指定 context 则默认使用 cluster1-context。



可以使用 kubectl config use-context 更改 current-context。


5、kubectl 生成 kubeconfig 的示例


kubectl 可以快速生成 kubeconfig,以下是一个示例:



若使用手写 kubeconfig 的方式,推荐一个工具 kubeval,可以校验 kubernetes yaml 或 json 格式的配置文件是否正确。


使用 kubeconfig 文件


配置 kuebctl 跨集群认证


kubectl 作为操作 k8s 的一个客户端工具,只要为 kubectl 提供连接 apiserver 的配置(kubeconfig),kubectl 可以在任何地方操作该集群,当然,若 kubeconfig 文件中配置多个集群,kubectl 也可以轻松地在多个集群之间切换。


kubectl 加载配置文件的顺序:


1、kubectl 默认连接本机的 8080 端口


2、从 $HOME/.kube 目录下查找文件名为 config 的文件


3、通过设置环境变量 KUBECONFIG 或者通过设置去指定其它 kubeconfig 文件



开篇的示例就是多集群认证方式配置的一种。


2020 年 1 月 03 日 10:32771

评论 1 条评论

发布
用户头像
从每一个细节看出技术人实力

2020 年 01 月 03 日 10:56
回复
没有更多评论了
发现更多内容

week2

Geek_deb968

medo 支付系统架构设计

陈皮

架构训练营第二周学习总结

灰羽零

第二周总结

架构第二周课后练习

Geek_Gu

极客大学架构师训练营

第二周作业 (作业二)

Geek_83908e

极客大学架构师训练营

week02总结

xxx

架构训练营第二周练习

灰羽零

用十六年时间,造一座声音“博物馆”:OPPO的影音进击之路

脑极体

训练营-第二周-作业一

行者

第二周总结

_

极客大学架构师训练营 第二周总结

逆序局部链表、Paxos算法原理、架构师发现问题所在 John 易筋 ARTS 打卡 Week 19

John(易筋)

ARTS 打卡计划 发现问题的真正所在 逆序局部链表

第二周课后练习 - 作业 2

致星海

架构师训练营Week02作业

IT老兵重开始

极客大学架构师训练营

【架构师训练营第 1 期 02 周】 学习总结

Bear在挨踢

极客大学架构师训练营

艺术家们手握“飞桨” 划出金秋UCCA最值得一看的AI艺术展

脑极体

架构一期二班 - 吴水金 - 第二课总结

吴水金

问题集锦:DBType not support : null

互联网应用架构

mybaitsplus

【FastDFS】面试官:如何实现文件的大规模分布式存储?(全程实战)

冰河

高并发 高性能 分布式存储 fastdfs 海量存储

架构师训练营第 1 期 -Week2 - 课后练习

鲁小鲁

极客大学架构师训练营 依赖倒置原则 接口隔离原则 框架设计 软件设计原则

第二周学习总结

alpha

极客大学架构师训练营

架构师训练营第一期第2周作业及总结

木头发芽

第二周 框架设计 学习总结

应鹏

学习 极客大学架构师训练营

week02 题目

xxx

第二周作业

Week 2 作業一 : OOD 5 principles [SOLID]

--------世界中心---------

OOD SOLID 架構師 面向對象編程 面向對象編程原則

第二周课后练习-作业1

致星海

架构师训练营第一期 - 第二周学习总结

卖猪肉的大叔

架构师训练营第 1 期 -Week2 - 框架设计学习总结

鲁小鲁

极客大学架构师训练营 面向对象设计原则 框架设计

架构师训练营作业:第二周

m

作业二:第二周学习总结

静海

Kubernetes 中 kubeconfig 的用法-InfoQ