文章
K8s 1.30 Uwubernetes 详解
Kubernetes 1.30 Uwubernetes 详解
概述
v1.30「Uwubernetes」于 2024-04-17 发布,代号是 Kubernetes + UwU 颜文字,主题「最可爱版本」。含 45 项增强(GA 17 / Beta 18 / Alpha 10)。GA 大户:Pod 调度就绪、CEL 准入控制、AppArmor、API Server Tracing 等毕业;Alpha 引入 Job 成功策略、Service trafficDistribution 等重要网络/调度特性。
发布基本信息
| 项目 | 内容 |
|---|
| 发布日期 | 2024-04-17 |
| 代号 | Uwubernetes |
| 开发周期 | 14 周(2024-01-08 ~ 2024-04-17) |
| 增强总数 | 45(GA 17 / Beta 18 / Alpha 10) |
| Release Lead | Kat Cosgrove |
| 贡献 | 863 家公司、1391 名个人 |
主要新特性解读
🟢 GA 特性
1. Pod 调度就绪 / Scheduling Gates(KEP-3521)
2. CEL 准入控制(KEP-3488)& CEL Webhook Match Conditions GA
- 解读:ValidatingAdmissionPolicies 与 webhook
matchConditions 全面 GA,CEL 成为生产可用的准入表达语言。
- 相关概念:CEL、admission chain、webhook 性能优化。
3. AppArmor 支持 GA(KEP-24)
4. VolumeManager 重构 GA
- 解读:kubelet 重启/机器重启后卷清理更稳健,
NewVolumeManagerReconstruction 已锁定不可禁用。
- 相关概念:kubelet VolumeManager、卷挂载恢复、
fsck。
5. 其他 GA:API Server Tracing、聚合发现、kubectl delete -i、指标基数限制、status.hostIPs、Cloud Dual-Stack --node-ip、Container Resource based HPA 等。
🟡 Beta 特性
1. 结构化认证/授权配置
- 解读:旧系统无法用多个同类认证器(如多 JWT)、无法不重启改配置。新结构化配置解决这些限制。
- 相关概念:AuthenticationConfiguration、AuthorizationConfiguration、JWT issuer、webhook authorizer。
2. 节点日志查询(KEP-2258)
- 解读:通过 kubelet API 获取节点服务日志(Linux journald / Windows 应用日志),免去 SSH。
- 相关概念:
kubectl node-logs、journald、/var/log。
3. CRD 验证棘轮(KEP-4008)
- 解读:API Server 接受不完全有效但未修改违规部分的更新,允许 CRD 作者安全添加新验证。
- 相关概念:CRD schema 演进、
x-kubernetes-validations、向后兼容。
4. LoadBalancerIPMode & 上下文日志 & Service 流量分配(部分 Alpha)
🔴 Alpha 特性
1. Job 成功策略 / successPolicy(KEP-3998)
- 解读:Indexed Job 定义成功条件:
succeededIndexes(指定索引成功即可)或 succeededCount(达数量即可)。满足后终止残留 Pod。
- 适用:模拟、leader-worker、ML 训练中「部分成功即整体成功」场景。
- 相关概念:Indexed Job、
completionMode、Kueue 批调度。
2. Service trafficDistribution(KEP-4444)
- 解读:新增
spec.trafficDistribution 表达流量路由偏好(非严格保证),首取值 PreferClose:偏好拓扑接近客户端的端点。
- 演进:v1.31 默认启用 Beta,v1.33 GA,v1.34
PreferClose 演化为 PreferSameZone/PreferSameNode。
- 相关概念:EndpointSlice 拓扑提示、
topologyKeys(已废弃)、externalTrafficPolicy。
3. 递归只读挂载 RRO(KEP-3857)
- 解读:卷及其子挂载设为只读,防止意外修改,数据完整性保障。
- 相关概念:
readOnlyRootFilesystem、mount propagation、recursiveReadOnly。
4. SELinux 挂载加速 & 存储版本迁移 Alpha。
弃用与移除
| 类型 | 项目 | 说明 |
|---|
| 移除 | SecurityContextDeny 准入插件 | v1.27 弃用,v1.30 移除,改用 Pod Security Admission |
重大变更与升级注意
⚠️ 卷模式转换保护默认启用(升级前必须操作)
prevent-volume-mode-conversion 在 external-provisioner v4.0.0 / external-snapshotter v7.0.0 默认启用。
- 影响:从 VolumeSnapshot 创建 PVC 时卷模式变更被拒绝,除非按文档授权。
- 行动:升级前阅读两个组件的 “Urgent Upgrade Notes”。
⚠️ SELinuxMount 行为变更
- 多个不同 SELinux 标签的 Pod 共享同一卷时引入行为变更。
⚠️ Go workspaces
k8s.io/code-generator 工具标志破坏性变更,下游消费者改用 kube_codegen.sh。
运维实践要点
- 推广 Scheduling Gates:对依赖外部准备(镜像预热、配置下发、配额审批)的批处理/大数据 Pod 加 gate,减少调度器噪声。
- CEL 准入全面替代轻量 webhook:标签合规、资源默认值、字段约束等迁移到 ValidatingAdmissionPolicies。
- AppArmor 字段化迁移:从注解
container.apparmor.security.beta.kubernetes.io/<c>: runtime/default 改为 appArmorProfile。
- 节点日志查询启用:开启
enableSystemLogQuery,排障无需 SSH。
- Job successPolicy 试点:Indexed Job 中定义部分成功策略,提升 ML/仿真任务效率。
常见问题 / 坑点
| 问题 | 原因 | 解决方案 |
|---|
| 快照恢复 PVC 失败 | 卷模式转换保护 | 为存储集成 SA 授予 pv-spec-converter 权限 |
| Pod 一直 Pending | 带 schedulingGates | 检查 gate 是否被外部控制器移除 |
| AppArmor 注解失效 | 已字段化 | 改用 securityContext.appArmorProfile |
| code-generator 报错 | Go workspaces 变更 | 用 kube_codegen.sh 替代旧标志 |
关联知识
参考资源
状态: 📖 已掌握