Kubernetes 1.35 升级清单:Pod 原地改资源转 GA,ipvs 与 Ingress NGINX 退场
v1.35(代号 Timbernetes)2025-12-17 发布,共 60 项增强:17 项 stable、19 项 beta、22 项 alpha。最新补丁 1.35.8(2026-08-11),1.35.9 目标 2026-09-15。
- 发布说明:https://kubernetes.io/blog/2025/12/17/kubernetes-v1-35-release/
- 版本页:https://kubernetes.io/releases/1.35/
原地改 Pod 资源(KEP #1287,GA)
在运行中的 Pod 上直接改容器的 CPU/内存 requests/limits,不重启 Pod。两个入口:
# 单个 Pod
kubectl edit pod my-pod -n default
# Deployment / StatefulSet 管理的 Pod:改 template
kubectl edit deployment my-app -n default
# 修改 spec.template.spec.containers[].resources 后保存
注意两点:一是只有 controller 不覆盖时 Pod 上的改动才留得住,生产环境应该直接改 Deployment/StatefulSet 的 template,否则下一轮 reconcile 会把 Pod spec 拉回去;二是原地调整不重建容器,Pod UID、IP、卷挂载都保持不变,因此调整前的资源水位要按现有负载评估。
PreferSameNode 流量分发(GA)
Service 的 trafficDistribution 字段可设为 PreferSameNode(原 PreferLocal/节点级拓扑)。kube-proxy 或 Cilium 等数据面会优先选择同节点 endpoint,只有必要时才跨节点转发。
apiVersion: v1
kind: Service
metadata:
name: my-svc
spec:
trafficDistribution: PreferSameNode
selector:
app: my-app
ports:
- port: 80
targetPort: 8080
这是偏好而非硬约束:本节点没有可用 endpoint 时仍会跨节点,行为上不等价于拓扑亲和。
同批 GA 的其他项
- Job API 的 managed-by 机制。
- Fine-grained SupplementalGroups 控制:per-container 严格模式,不再整个 Pod 继承。
- kubelet drop-in 配置目录。
- SPDY → WebSockets 迁移。
- 另有 15 项升到 stable,包括 CPUManager 的
reservedSystemCPUs、Pod Generation、kubelet image GC 的最大年龄、TopologyManager 的MaxAllowableNUMANodes。
Beta
KYAML(KEP #5295):Kubernetes 优化的 YAML 子集,更易读,对 kubectl 等工具更友好。
其他 beta 项:StatefulSet 的 maxUnavailable;HPA 可配置 tolerance;Pod user namespaces;VolumeSource 支持 OCI artifact/image;存储版本迁移(storage version migration);CSI driver 通过 secrets 字段 opt-in service account token;Deployment 终止副本计数;kubelet 缓存镜像凭证校验;更细粒度的容器重启规则;Pod certificates for workload identity。
Alpha
Gang scheduling(KEP #4671):引入 Workload API 和 PodGroup,实现 all-or-nothing 调度——只有集群能同时容纳整组 Pod 时才真正调度,否则整组等待,面向 AI 批量任务。
同批 alpha 还包括:Job 被挂起时可改容器资源(KEP #5440,避免 OOM 后删 Job 重建导致历史丢失);Constrained impersonation;Flagz/Statusz 组件自省端点;CCM 基于 informer 的路由控制器协调。
弃用与移除
- kube-proxy 的 ipvs 模式弃用,启动会打警告。Linux 节点应转向 nftables,这是当前推荐的替代模式。
- Ingress NGINX 退役,推荐迁到 Gateway API。
- cgroup v1 支持结束,统一到 cgroup v2。
升级前可验证清单
# 1) 节点 cgroup 版本:期望 cgroup2fs
stat -fc %T /sys/fs/cgroup
# 2) kube-proxy 当前模式:ipvs 会触发弃用警告
kubectl -n kube-system get cm kube-proxy -o yaml | grep -i mode
# 切换方式(nftables 为推荐替代)
kube-proxy --proxy-mode=nftables
# 3) Ingress NGINX 资产清点,规划迁到 Gateway API
kubectl get ingressclass
kubectl get ingress -A
kubectl get gatewayclass
顺序上建议先清 ipvs 与 cgroup v1(直接影响节点能否正常启动 kubelet/kube-proxy),再盘 Ingress NGINX 的迁移面,最后才动 Pod 原地改资源这类收益项。