文章

K8s 1.33 Octarine 详解

Kubernetes 1.33 Octarine 详解

概述

v1.33「Octarine」于 2025-04-23 发布,代号取自《碟形世界》的「第八种魔法色」,寓意开源魔法。含 64 项增强(GA 18 / Beta 20 / Alpha 24),是近年增强最多的版本之一。三大里程碑 GA:Sidecar 容器、nftables kube-proxy 后端、拓扑感知路由;安全里程碑:用户命名空间默认开启 Beta;同时 In-place Pod 资源调整进入 Beta。

发布基本信息

项目内容
发布日期2025-04-23
代号Octarine(魔法色)
开发周期15 周(2025-01-13 ~ 2025-04-23)
增强总数64(GA 18 / Beta 20 / Alpha 24)
贡献121 家公司、570 名个人

主要新特性解读

🟢 GA 特性

1. Sidecar 容器 GA(KEP-753)⭐

  • 解读:自 v1.28 Alpha 起,历经 5 个版本终于 GA。边车容器作为 restartPolicy: Always 的特殊 init 容器实现,确保在应用容器之前启动、整个 Pod 生命周期运行、主容器退出后自动终止;支持探针与 OOM 分数调整。
  • 价值:彻底取代 hack 式 sidecar 注入,网络代理/日志/监控 sidecar 生命周期管理更可靠。
  • 相关概念:init container、Pod 生命周期、startup/readiness/liveness probe、Istio/Linkerd sidecar。

2. nftables kube-proxy 后端 GA(KEP-3866)⭐

  • 解读:iptables 仍为 Linux 默认(兼容性),但 nftables 已 GA 可用,性能与可扩展性显著提升。
  • 相关概念:iptables vs nftables、conntrack、Service 转发、--proxy-mode

3. 拓扑感知路由 trafficDistribution: PreferClose GA(KEP-4444/2433)⭐

  • 解读:EndpointSlice 拓扑感知提示使 kube-proxy 优先路由同区域端点,降低延迟与跨区域成本。
  • 相关概念:EndpointSlice topology hints、externalTrafficPolicy、多区域集群。

4. 多 Service CIDR GA(KEP-1880)

  • ServiceCIDR/IPAddress API 对象动态管理 Service IP 范围。

5. Job 增强多项 GA

  • 按索引退避限制(KEP-3850)、Job 成功策略(KEP-3998)毕业。

6. 其他 GA:matchLabelKeys/mismatchLabelKeys、卷填充器(KEP-1495)、PV 回收策略保证、CRD 验证棘轮、RRO 挂载、kubectl --subresource、Portworx CSI 迁移等。

🟡 Beta 特性

1. In-place Pod 资源调整 Beta(KEP-1287)⭐

  • 解读:动态更新现有 Pod 的 CPU/内存而无需重启,支持无停机垂直扩展、低流量缩减、启动多分配后缩减。
  • 演进:v1.35 GA。
  • 相关概念:VerticalPodAutoscaler、resizePolicyresources.limits 热更新。

2. 用户命名空间默认开启 Beta(KEP-127)⭐

  • 解读:2016 年开启的最古老 KEP 之一!v1.25 Alpha → v1.30 Beta(默认关)→ v1.33 默认开启 Beta。需手动设 pod.spec.hostUsers 启用。
  • 价值:容器内 root 映射为主机非特权用户,缓解容器逃逸漏洞,安全隔离里程碑。
  • 相关概念:user namespace、hostUsers、容器逃逸、Linux UID 映射。

3. DRA 结构化参数 v1beta2 Beta & 网络接口 DRA Beta。

4. 镜像卷 Beta(KEP-4639)

  • OCI 镜像作为 Pod 卷,独立打包卷数据并在容器间共享。

5. ClusterTrustBundles Beta(KEP-3257)

  • 集群范围资源保存 X.509 信任锚,方便证书签名者发布根证书。

6. 细粒度 SupplementalGroups Beta(KEP-3619)

  • supplementalGroupsPolicy 支持 Merge/Strict,解决隐式组成员身份安全问题。

7. 其他 Beta:Windows DSR、CPUManager 跨 NUMA、Pod procMount、PreStop 零秒休眠、validation-gen

🔴 Alpha 特性

1. .kuberc kubectl 用户偏好(KEP-3104)

  • 解读:新配置文件含 kubectl 别名与覆盖(如默认 server-side apply),与 kubeconfig 凭据分离。KUBECTL_KUBERC=true,默认路径 ~/.kube/kuberc
  • 相关概念:kubeconfig、kubectl 插件、shell alias 对比。

2. DRA 多项 Alpha

  • 设备污点与容忍(KEP-5055)、优先级列表 firstAvailable(KEP-4816)、AdminAccess(KEP-5018)、可分区设备(KEP-4815)。
  • 相关概念:Node taints/tolerations 类比、设备驱逐、GPU 分区。

3. HPA 可配置容差 Alpha(KEP-4951)

  • 对小指标波动抑制扩缩反应。

4. PSI 指标 Alpha(KEP-4205)

  • Linux cgroupv2 提供压力停滞信息,检测资源短缺。
  • 相关概念:PSI(Pressure Stall Information)、memory.pressure、资源瓶颈诊断。

5. 自定义容器停止信号 Alpha & 节点拓扑标签 downward API Alpha。

弃用与移除

类型项目说明
弃用Endpoints API(KEP-4974)EndpointSlices 自 v1.21 稳定替代,Endpoints 弃用,需迁移
移除status.nodeInfo.kubeProxyVersionv1.31 弃用,v1.33 完全移除
移除in-tree gitRepo 卷驱动自 v1.11 弃用,有安全风险(root RCE);kubelet feature-gate 可 3 版本内重启用
移除Windows Pod host networkKEP 撤回,HostProcess 容器不受影响

重大变更与升级注意

⚠️ Endpoints API 弃用

  • 直接用 Endpoints API 的工作负载/脚本迁 EndpointSlices。

⚠️ gitRepo 卷移除

  • gitRepo 的工作负载迁 init 容器或 git-sync。kubelet GitRepoVolumeDriver feature gate 可临时重启用。

⚠️ Sidecar 行为变化

  • Sidecar 作为 restartPolicy: Always init 容器,行为可能与旧版本不同。

⚠️ iptables 仍默认

  • nftables GA 但非默认,迁移看指南。

运维实践要点

  1. Sidecar 容器全面采用:GA 后将日志/监控/网络 sidecar 改为原生 sidecar 容器,简化生命周期管理。
  2. 用户命名空间试点 hardened 工作负载:对安全敏感服务设 hostUsers: false,验证容器逃逸缓解。
  3. In-place Pod 资源调整试点:结合 VPA 评估无停机垂直扩展,注意容器运行时与节点支持。
  4. Endpoints → EndpointSlices 迁移:扫描自定义控制器/脚本,统一改 EndpointSlice。
  5. nftables 迁移评估:大型集群评估性能收益,制定迁移计划。
  6. 拓扑感知路由:多区域集群启用 trafficDistribution: PreferClose 降本。

常见问题 / 坑点

问题原因解决方案
自定义控制器 list Endpoints 失效Endpoints 弃用改 EndpointSlices
gitRepo Pod 失败驱动移除用 init 容器 + git-sync
Sidecar 行为异常GA 后生命周期变化检查 restartPolicy: Always init 容器顺序
用户命名空间 Pod 启动失败节点/运行时不支持确认容器运行时支持 user namespace

关联知识

参考资源


状态: 📖 已掌握