文章
K8s 1.31 Elli 详解
Kubernetes 1.31 Elli 详解
概述
v1.31「Elli」于 2024-08-13 发布,是 Kubernetes 十周年后首个版本,代号是一只戴水手帽的快乐小狗。含 45 项增强(GA 11 / Beta 22 / Alpha 12)。关键里程碑:完成全部 in-tree 云提供商集成与 Ceph 卷插件的移除;kube-proxy nftables 后端默认启用;新 DRA API(结构化参数)Alpha 引入;镜像卷、细粒度授权等面向 AI/安全的新特性登场。
发布基本信息
| 项目 | 内容 |
|---|
| 发布日期 | 2024-08-13 |
| 代号 | Elli |
| 开发周期 | 14 周(2024-05-07 ~ 2024-08-13) |
| 增强总数 | 45(GA 11 / Beta 22 / Alpha 12) |
| 贡献 | 113 家公司、528 名个人(核心);生态 379 家/2268 人 |
主要新特性解读
🟢 GA 特性
1. AppArmor 字段化 GA
- 从注解迁移到
securityContext.appArmorProfile.type,正式稳定。
2. kube-proxy LoadBalancer 连接排空 GA(KEP-3836)
- 解读:为 LoadBalancer 服务实现连接排空,终止节点时不丢流量。v1.30 默认启用,v1.31 GA。
- 相关概念:
connectionDraining、terminating endpoint、externalTrafficPolicy。
3. PV lastTransitionTime GA
- 解读:PV 在 Pending/Bound/Released 阶段间转换的时间戳,可用于 SLO 指标。
- 相关概念:PV phase、SLO 监控。
4. Job/StatefulSet/ReplicaSet 增强 GA
- 弹性 Indexed Job、StatefulSet 起始序号
spec.ordinals.start、ReplicaSet 缩容随机选择、Job 可重试/不可重试 Pod 失败。
- 相关概念:
ordinals.start、缩容确定性、podFailurePolicy。
5. cgroup v1 进入维护模式(KEP-4569,亦为弃用)
- 不再加新功能,仅关键安全修复。建议迁 cgroup v2(v1.35 将移除)。
🟡 Beta 特性
1. kube-proxy nftables 后端默认启用(KEP-3866)
- 解读:nftables 性能与可扩展性优于 iptables,默认启用 Beta。需内核 ≥ 5.13,仅 Linux。
- 注意:NodePort 等行为与 iptables 模式有差异,迁移前看指南。
- 相关概念:nftables、conntrack、
--ipvs vs --iptables vs --nftables。
2. 多 Service CIDR(KEP-1880)
- 解读:管理员可动态修改 Service CIDR 范围,零停机解决 IP 耗尽。此前 IP 范围在集群创建时硬编码。
- 相关概念:
ServiceCIDR、IPAddress API、ClusterIP 分配。
3. Service trafficDistribution 默认启用
4. PV 回收策略保证(KEP-2644)
- 解读:在 PV 上加 finalizer,确保 PVC 先删时「Delete」回收策略仍执行,防止存储泄漏。
- 相关概念:PV finalizer、
persistentVolumeReclaimPolicy。
5. VolumeAttributesClass(KEP-3751)
- 解读:通用 K8s 原生 API,动态修改卷参数(如已分配 IO),在线垂直扩展卷平衡成本性能。
- 相关概念:
VolumeAttributesClass、CSI 调整、IO 突发。
6. Bound SA Token 节点绑定(KEP-4193)
- 支持仅绑定节点(非 Pod)的令牌,声明含节点信息并验证节点存在。
🔴 Alpha 特性
1. 新 DRA API / 结构化参数(KEP-3063)
- 解读:更好的加速器管理。核心是「结构化参数」让资源信息对 K8s 与客户端透明,支持 Cluster Autoscaler 模拟。
- 演进:v1.32 旧 DRA 撤回、结构化参数 Beta;v1.34 DRA 核心 GA。
- 相关概念:Device Plugin、ResourceClaim、ResourceSlice、GPU 调度。
2. 镜像卷 / ImageVolume(KEP-4639)
- 解读:将 OCI 镜像直接作为 Pod 卷挂载。面向 AI/ML 场景(如把模型/数据集打包为镜像挂载)。
- 相关概念:OCI artifact、
image: volume source、emptyDir 对比。
3. 设备健康信息暴露(KEP-4680)
- Pod
.status 每个容器新增 allocatedResourcesStatus,报告设备健康。
4. 细粒度选择器授权(KEP-4601)
- 解读:webhook 授权器可基于标签/字段选择器允许 list/watch。例:允许 list
.spec.nodeName 匹配特定值的 Pod,支持更安全的按节点扩展。
- 相关概念:node authorizer、RBAC、字段选择器授权。
5. 匿名 API 访问限制(KEP-4633)
- 可配置匿名请求可访问的端点,防止 RBAC 误配置。
弃用与移除
| 类型 | 项目 | 说明 |
|---|
| 移除 | 全部 in-tree 云提供商集成 | 标志云提供商外部化完成(自 v1.26 起) |
| 移除 | in-tree provider feature gates | 仅留 Portworx |
| 移除 | CephFS 卷插件 | 迁 CephFS CSI 驱动 |
| 移除 | Ceph RBD 卷插件 | 迁 RBD CSI 驱动 |
| 移除 | --keep-terminated-pod-volumes | 2017 弃用,正式移除 |
| 弃用 | status.nodeInfo.kubeProxyVersion | 默认关闭,v1.33 移除 |
| 弃用 | 非 CSI 卷限制调度插件 | 改用 NodeVolumeLimits |
| 即将移除 | SHA-1 证书 | Go 1.24 完全移除,需迁非 SHA-1 |
重大变更与升级注意
⚠️ CephFS / Ceph RBD 移除
- 使用
cephfs/rbd 卷类型的工作负载,升级前必须改用 CSI 驱动重建。
⚠️ in-tree 云提供商全部移除
- 必须迁移外部集成(v1.29 已默认移除,v1.31 清理残余 feature gate)。
⚠️ cgroup v1 维护模式
- 确认 OS 与容器运行时支持 cgroup v2,测试工作负载兼容性。
⚠️ SHA-1 证书
- 私有 CA 用 SHA-1 的尽快迁移,Go 1.24(2025 上半年)完全移除。
⚠️ nftables 迁移
- 默认启用 Beta,行为与 iptables 有差异,NodePort 场景重点验证。
⚠️ 调度器 QueueingHint 变更(自定义插件开发者)
- 自定义插件若拒绝条件可通过 Pod 更新解决,必须为 Pod/Update 事件实现 QueueingHint。
运维实践要点
- Ceph 迁移:升级前用 CSI 驱动重建 Ceph 工作负载,验证数据可访问。
- nftables 试点:测试集群先开 nftables,验证 NodePort/LoadBalancer/NetworkPolicy 行为,再推生产。
- 多 Service CIDR 规划:长期运行集群提前评估,避免 IP 耗尽时手忙脚乱。
- VolumeAttributesClass 试点:数据库类有状态服务可动态调 IO。
- DRA/镜像卷关注:AI/ML 平台团队跟踪 DRA 与镜像卷成熟度,规划 GPU/模型挂载方案。
- SHA-1 证书审计:扫描集群组件与客户端证书签名算法。
常见问题 / 坑点
| 问题 | 原因 | 解决方案 |
|---|
| Ceph 工作负载启动失败 | in-tree 插件移除 | 改用 Ceph CSI 驱动 |
| 云 LB/Volume 异常 | in-tree 云提供商移除 | 部署外部 CCM |
| nftables 模式 NodePort 行为不同 | 默认启用 Beta | 查迁移指南,必要时回退 iptables |
| 旧客户端证书报 SHA-1 错 | Go 移除 SHA-1 | 重签非 SHA-1 证书 |
关联知识
参考资源
状态: 📖 已掌握