kubectl 上下文是什么
kubectl 靠 kubeconfig 文件找到集群:文件里分 clusters、users、contexts 三组配置,context 把「集群 + 用户 + 默认命名空间」绑成一个可切换的组合,current-context 决定当前用哪一套。多集群环境里几乎所有误操作的根源都在这里——切到生产上下文后忘了切回来,下一条命令就打到了生产。
基本信息
| 默认路径 | ~/.kube/config;可用 KUBECONFIG 指向多个文件(合并生效) |
|---|---|
| 查看 | kubectl config get-contexts;kubectl config view --minify |
| 切换 | kubectl config use-context 上下文名 |
| 单命令覆盖 | --context、--kubeconfig、--namespace 只在当前命令生效 |
| 固化命名空间 | config set-context --current --namespace=dev |
典型使用场景
- 多集群切换:开发、测试、生产各一套上下文,按需切换
- 临时指定:用 --context 单条命令指定目标,避免先切回再操作
- 命名空间固化:把常用命名空间写进上下文,省去每条命令带 -n
- 多文件合并:把多个集群的配置放在不同文件里,用 KUBECONFIG 合并加载
- 交接与接管:查看当前上下文与集群地址,确认自己连的是哪个环境
常用操作
常用操作
kubectl config get-contexts # 列出全部上下文与当前项
kubectl config use-context prod-ali # 切换上下文
kubectl config set-context --current --namespace=dev # 固化默认命名空间
kubectl config view --minify | head -30 # 只看当前生效的配置
kubectl --context dev-cluster get pods # 单条命令指定上下文配置三段结构
| 段落 | 内容 | 说明 |
|---|---|---|
| clusters | 集群地址与证书 | 定义连到哪里 |
| users | 用户凭证或证书 | 定义以谁的身份 |
| contexts | 集群加用户加命名空间 | 定义用哪套组合 |
| current-context | 当前选中的上下文 | 决定命令默认作用目标 |
生产集群的上下文名称建议带 prod 前缀,并把当前上下文显示在命令提示符里。kubectl 不会问「你确定吗」,执行即生效。
KUBECONFIG 支持多个文件路径合并,同名条目按合并规则处理,结果可能与直觉不同;排查权限或地址异常时,先确认实际生效的是哪个文件里的哪一段。
误操作防护习惯
- 执行变更前先跑一次 config current-context,确认目标环境
- 生产上下文命名带 prod 前缀,并在提示符里显示当前上下文
- 危险操作前用 --dry-run 先看影响范围
- 危险命令优先按文件执行,便于审阅将要修改的内容
- 只读排查用 --context 单条指定,不修改全局状态