Red Hat YAML插件未安装或未重启导致补全失效,需安装后执行Developer: Reload Window;yaml.schemas配置必须为顶级字段、路径正确且顺序无误,文件语言模式须设为Kubernetes。

Red Hat YAML插件没装或没重启,补全根本不会触发
不装 Red Hat YAML 插件,VSCode 对 kind:、spec: 这类字段完全无感知,Ctrl+Space 什么都不会弹出来。它不是“功能弱”,而是压根没启动语言服务器。
安装后必须执行 Developer: Reload Window(Cmd+Shift+P 输入执行),仅启用插件不重启,yaml-language-server 不会加载。验证方法:新建 test.yaml,输入 kind: 后立刻按 Ctrl+Space —— 若无 Deployment、Service 等建议,说明插件未生效。
settings.json 中 yaml.schemas 配置写错路径或 URL
Schema 绑定失败是智能提示缺失的最常见原因。VSCode 不会报错,只会静默降级为纯文本处理。
-
"yaml.schemas"必须是顶级字段,不能嵌套在"yaml"或其他对象里 - 键(key)是 Schema URL 或本地路径,值(value)是 glob 模式,顺序反了就失效:
"./schema/k8s.json": "**/k8s/*.yaml"✅,"**/k8s/*.yaml": "./schema/k8s.json"❌ - 远程 URL 要能直接 curl 通:
https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master-standalone-strict/all.json是当前最稳定的公开 Schema,别用已归档的instrumenta域名 - 本地 Schema 路径必须相对于工作区根目录,
"./.vscode/schema/k8s.json"可以,"/Users/xxx/project/.vscode/schema/k8s.json"不行
文件没被识别为 Kubernetes YAML,语言模式仍是 “YAML”
即使 Schema 配好了,如果文件语言模式是 YAML 而非 Kubernetes,Red Hat 插件可能跳过校验逻辑 —— 尤其当文件名不规范(如 my-config.yml 而非 deployment.yaml)时。
手动切换语言模式:
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 点击 VSCode 窗口右下角语言标识(显示 “YAML”)
- 选
Configure File Association for '.yml' - 输入
kubernetes回车(注意不是yaml或yaml (kubernetes)) - 确认状态栏变成
Kubernetes
该操作会在当前工作区生成 .vscode/settings.json,添加 "files.associations": { "*.yml": "kubernetes" },比全局配置更可靠。
网络受限时用 kubectl 生成本地 Schema 但漏了关键步骤
用 kubectl get --raw "/openapi/v2" 导出 Schema 是可行方案,但直接保存全量 JSON 会导致性能卡顿、补全延迟甚至崩溃。
必须做三件事:
- 用
jq提取精简结构:kubectl get --raw "/openapi/v2" | jq '.definitions' > kubernetes-schema.json - 把文件放进项目内(如
.vscode/schema/k8s.json),不能放桌面或家目录 - 在
yaml.schemas中使用相对路径,并确保 glob 模式覆盖目标文件:"./.vscode/schema/k8s.json": ["**/*.yaml", "**/*.yml"]
最后打开一个匹配的 YAML 文件,悬停在 apiVersion: 上 —— 如果看到类型定义和描述文字,说明 Schema 已真正加载。
Kubernetes YAML 的 Schema 支持本质是“静态结构映射”,它不理解你的 Helm 模板或 Kustomize 变量;一旦用了 {{ .Values.replicas }} 或 patchesStrategicMerge,提示就会断在变量展开点。这不是配置问题,是能力边界。










