文章

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 LeadKat Cosgrove
贡献863 家公司、1391 名个人

主要新特性解读

🟢 GA 特性

1. Pod 调度就绪 / Scheduling Gates(KEP-3521)

  • 解决问题:依赖外部条件的 Pod 一旦创建就被调度器反复尝试,浪费资源、干扰其他 Pod 调度。
  • 机制:通过 .spec.schedulingGates 控制 Pod 何时可被调度,调度器跳过带 gate 的 Pod。
  • 用法
    spec:
      schedulingGates:
        - name: example.com/ready-to-run
    外部控制器就绪后移除 gate,Pod 进入调度。
  • 价值:配合 Cluster Autoscaler 节省成本;实现配额、安全控制。
  • 相关概念:调度队列、Cluster Autoscaler、Pending 状态、外部准入/控制器协同。

2. CEL 准入控制(KEP-3488)& CEL Webhook Match Conditions GA

  • 解读:ValidatingAdmissionPolicies 与 webhook matchConditions 全面 GA,CEL 成为生产可用的准入表达语言。
  • 相关概念:CEL、admission chain、webhook 性能优化。

3. AppArmor 支持 GA(KEP-24)

  • 解读:从注解方式迁移到 securityContext.appArmorProfile.type 字段,正式稳定。
  • 用法
    securityContext:
      appArmorProfile:
        type: RuntimeDefault
  • 相关概念:AppArmor、SELinux、Pod Security Standards、Linux 安全模块。

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

运维实践要点

  1. 推广 Scheduling Gates:对依赖外部准备(镜像预热、配置下发、配额审批)的批处理/大数据 Pod 加 gate,减少调度器噪声。
  2. CEL 准入全面替代轻量 webhook:标签合规、资源默认值、字段约束等迁移到 ValidatingAdmissionPolicies。
  3. AppArmor 字段化迁移:从注解 container.apparmor.security.beta.kubernetes.io/<c>: runtime/default 改为 appArmorProfile
  4. 节点日志查询启用:开启 enableSystemLogQuery,排障无需 SSH。
  5. Job successPolicy 试点:Indexed Job 中定义部分成功策略,提升 ML/仿真任务效率。

常见问题 / 坑点

问题原因解决方案
快照恢复 PVC 失败卷模式转换保护为存储集成 SA 授予 pv-spec-converter 权限
Pod 一直 Pending带 schedulingGates检查 gate 是否被外部控制器移除
AppArmor 注解失效已字段化改用 securityContext.appArmorProfile
code-generator 报错Go workspaces 变更kube_codegen.sh 替代旧标志

关联知识

参考资源


状态: 📖 已掌握