K8s 1.37 的 kyaml 输出补上了一个仍会静默删数据的 YAML 旧账
来源:dev.to — 2026-09-25
📋 概述
作者手写了一组带有挪威问题特征的 YAML 值,喂给真实的 Kubernetes 1.37:8 个被直接拒绝,2 个被当成数字拒绝,还有 2 个完全无声地从对象里消失了——不是变成空值,是整条字段不见,kubectl get -o json 里连 data 键都没有。这正是 1.37 给 kubectl 新工具要解决的 bug:KYAML(KEP-5295)在这一版转正,是一种更严格、带引号、用花括号与方括号的 YAML 方言,kubectl get -o kyaml 能打印它,kubectl apply -f 也把它当普通输入接受,因为底下仍然是合法 YAML。它的卖点是消灭让未加引号的 NO 变成布尔 false 的「挪威问题」。
🔑 核心要点
- 无声消失的具体现场:一个字段被设成 ~(波浪号),apply 结果是成功创建,而该字段连同整个 data 键一起消失。
- 作者的实验方法是把 ConfigMap 直接应用到真实 1.37 API server,而不是只看发布公告里宣称的行为。
- KYAML 不是新格式:它在底层仍然是合法 YAML,所以 apply 能照常接受,只是把歧义写法显式化。
- 实验本身也有坑:kind 集群在 kubeadm 等控制面时失败,节点容器里的 kubelet 因 cgroup v1 不再被支持而崩溃循环。
💡 金句
不是空值,是消失了:kubectl get -o json 显示的 ConfigMap 连一个 data 键都没有。
👍 0
👎 0
← 返回 dev.to 首页