上下文管理是什么
访问配置里保存三类信息:连哪个集群、用哪个身份、默认操作哪个命名空间,这三者组合起来称为上下文。管理上下文就是查看、切换与修改这些配置,多集群环境下它是防止误操作的第一个关口——命令打到哪个集群,完全由当前上下文决定。
为什么先确认再动手
同一个命令在不同上下文下的效果天差地别:看起来只是缩容,实际可能落在生产集群上。因此变更类操作前先确认当前上下文的集群与命名空间是基本纪律。工具里普遍支持把当前上下文显示在命令提示符中,成本很低但能避免大多数环境错配。
基本信息
| 适用环境 | 任何 Kubernetes 发行版,配置由客户端读取 |
|---|---|
| 三要素 | 集群、用户身份、默认命名空间 |
| 配置文件 | 通常位于用户主目录下的配置目录,可用环境变量指定 |
| 多文件支持 | 可指定多个配置文件,读取时合并生效 |
| 临时覆盖 | 单条命令可临时指定上下文或命名空间 |
| 敏感内容 | 包含客户端证书与令牌,属于凭据文件 |
典型使用场景
- 多集群巡检:在多个环境之间切换,确认每个集群的健康状况
- 环境隔离:开发、测试、生产各用独立上下文,减少误操作
- 命名空间切换:把默认命名空间改到当前工作的范围
- 配置核对:执行变更前确认当前指向的集群与身份
- 凭据更新:集群地址或证书更新后修改对应条目
- 合并配置:把多个来源的配置放在一起使用
常用示例
常用示例
kubectl config get-contexts # 列出所有上下文,星号是当前
kubectl config current-context # 只看当前上下文
kubectl config use-context prod-cluster # 切换上下文
kubectl config set-context --current --namespace=prod # 改当前上下文的默认命名空间
kubectl config view --minify # 只显示当前生效的配置
kubectl --context=staging get pods # 单条命令临时指定上下文相关命令分工
| 命令 | 作用 | 注意 |
|---|---|---|
| 列出上下文 | 查看全部配置与当前选中项 | 变更前先看一眼 |
| 切换上下文 | 改变后续命令的目标集群 | 切换后建议再次确认 |
| 修改默认命名空间 | 只影响当前上下文 | 不会改变其他上下文的设置 |
| 查看生效配置 | 精简显示当前实际使用的部分 | 排查连不上集群时很有用 |
修改默认命名空间只影响当前上下文,切换回其他上下文后默认值并不跟着变化。
配置文件里含客户端证书与访问令牌,等同于集群凭据,不要提交到代码仓库或直接分享给他人。