编程 Kubernetes 1.36 深度解析:当云原生遇上 AI 时代,60 项增强背后的架构革命

2026-04-19 09:45:19 +0800 CST views 10

Kubernetes 1.36 深度解析:当云原生遇上 AI 时代,60 项增强背后的架构革命

发布时间:2026年4月22日
关键词:Kubernetes 1.36 | 云原生 | AI 基础设施 | 容器编排 | 生产实践


引言:Kubernetes 的下一个十年

2026 年 4 月 22 日,Kubernetes v1.36 正式发布。这是 2026 年的第一个主要版本,也是云原生生态进入"AI 原生"时代的关键里程碑。

回顾 Kubernetes 的发展历程,从 2014 年开源至今,它已经从 Google 内部的 Borg 系统演变成了云原生的事实标准。但真正的挑战才刚刚开始——当 AI 工作负载成为企业基础设施的主角,当 GPU 调度、向量存储、模型训练流水线成为日常需求,Kubernetes 准备好了吗?

v1.36 的答案是:60 项功能增强,18 个 Alpha、29 个 Beta、13 个 Stable。这不是简单的功能堆砌,而是一场面向 AI 时代的架构革命。

本文将从架构师的视角,深度解析 Kubernetes 1.36 的核心变革,探讨它如何重塑企业的 AI 基础设施,以及我们该如何为这场变革做好准备。


一、发布概览:时间线与版本策略

1.1 发布周期

Kubernetes 1.36 的发布遵循了社区严格的时间管理:

里程碑日期
发布周期开始2026年1月12日
功能增强冻结2026年2月11日
代码冻结2026年3月18日
文档冻结2026年4月8日
正式发布2026年4月22日

这个 14 周的发布周期体现了 Kubernetes 社区的工程成熟度。与之前的版本相比,1.36 的特别之处在于:它是第一个将 AI 工作负载作为一等公民设计的版本

1.2 版本现状

截至 2026 年 3 月,Kubernetes 的稳定版本为 1.35.2(发布于 2026 年 2 月 26 日)。1.36 的发布意味着:

  • 1.35 进入维护模式
  • 1.36 成为最新的稳定版本
  • 1.32 及更早版本逐步进入 EOL(End of Life)

对于生产环境,建议的升级策略是:等待 1.36.1 或 1.36.2 补丁版本发布后,先在测试环境验证,再逐步推广到生产


二、核心架构变革:面向 AI 的基础设施

2.1 AI 工作负载成为增长主引擎

2026 年的云原生领域,一个不可逆转的趋势正在发生:AI 工作负载成为 Kubernetes 采用的主导力量

根据 KubeCon Europe 2026 的数据:

  • 超过 73% 的企业正在 Kubernetes 上运行 AI/ML 工作负载
  • GPU 调度请求同比增长 340%
  • 向量数据库部署量增长 520%

这些数据背后是一个核心事实:Kubernetes 正在从"容器编排平台"进化为"AI 基础设施平台"

2.2 三大架构演进方向

Kubernetes 1.36 的架构演进可以归纳为三个核心方向:

方向一:GPU 与异构计算的原生支持

AI 训练与推理对计算资源的需求与传统应用截然不同:

  • GPU 调度:从"有没有"到"好不好",需要考虑 GPU 拓扑、显存分配、多卡通信
  • 资源共享:训练任务的弹性伸缩需要更精细的资源切片能力
  • 跨节点部署:大模型分布式训练需要跨节点的模型并行支持

方向二:有状态工作负载的成熟化

AI 流水线引入了复杂的有状态需求:

  • 特征存储:需要低延迟、高吞吐的数据访问
  • 向量搜索:依赖持久化的向量索引
  • 检查点与恢复:训练任务需要可靠的检查点机制
  • 模型目录:版本化管理与跨集群同步

方向三:边缘与混合云的统一编排

实时推理正在向边缘迁移:

  • 延迟敏感:制造业、医疗、自动驾驶等场景无法容忍云端延迟
  • 混合存储:本地磁盘、设备存储、临时卷的组合使用
  • 断网自治:边缘节点需要离线运行的能力

三、深度解析:13 个 Stable 功能的生产价值

3.1 Pod 资源原地更新(In-Place Pod Vertical Scaling)

KEP: 1287-in-place-update-pod-resources
状态: Stable
价值: ⭐⭐⭐⭐⭐(生产必备)

这是 Kubernetes 1.36 最受期待的功能之一。在之前的版本中,修改 Pod 的资源配置(CPU/内存)必须删除并重建 Pod,这在生产环境中意味着:

  • 服务中断
  • 连接重置
  • 状态丢失
  • 调度延迟

原地更新的核心机制

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: app
    resources:
      requests:
        cpu: "500m"
        memory: "512Mi"
      limits:
        cpu: "1000m"
        memory: "1Gi"
    resizePolicy:
    - resourceName: cpu
      restartPolicy: NotRequired  # 原地更新,不重启容器
    - resourceName: memory
      restartPolicy: RestartContainer  # 内存更新需要重启

生产场景实战

假设你运行一个电商推荐系统,在促销期间需要动态扩容:

# 查看当前 Pod 资源
kubectl get pod recommendation-7d9f4b8c5-x2v4p -o jsonpath='{.spec.containers[0].resources}'

# 原地更新 CPU 限制(不重启)
kubectl patch pod recommendation-7d9f4b8c5-x2v4p --patch '{"spec":{"containers":[{"name":"app","resources":{"limits":{"cpu":"2000m"}}}]}}'

# 验证更新状态
kubectl get pod recommendation-7d9f4b8c5-x2v4p -o jsonpath='{.status.resize}'

关键限制与最佳实践

  1. 节点必须有足够资源:原地更新不会触发重新调度
  2. 内存更新通常需要重启:因为 cgroup 内存限制无法热更新
  3. 与 VPA 的集成:Vertical Pod Autoscaler 可以利用此功能实现无中断扩容
  4. 监控指标:关注 kube_pod_status_resize 指标

3.2 基于污点的驱逐(Taint Based Evictions)

KEP: 166-taint-based-eviction
状态: Stable
价值: ⭐⭐⭐⭐⭐(高可用基石)

这个功能解决了节点故障时的优雅驱逐问题。在 1.36 之前,节点 NotReady 后,Pod 的驱逐由控制器硬编码的 5 分钟超时决定,缺乏灵活性。

核心机制

apiVersion: v1
kind: Node
metadata:
  name: worker-node-1
spec:
  taints:
  - key: node.kubernetes.io/not-ready
    effect: NoExecute
    timeAdded: "2026-04-19T08:00:00Z"
  - key: node.kubernetes.io/unreachable
    effect: NoExecute
    timeAdded: "2026-04-19T08:00:00Z"

默认容忍时间

  • node.kubernetes.io/not-ready: 300s
  • node.kubernetes.io/unreachable: 300s

自定义 Pod 容忍

apiVersion: v1
kind: Pod
spec:
  tolerations:
  - key: node.kubernetes.io/not-ready
    operator: Exists
    effect: NoExecute
    tolerationSeconds: 60  # 1分钟后驱逐,适合无状态应用
  - key: node.kubernetes.io/unreachable
    operator: Exists
    effect: NoExecute
    tolerationSeconds: 60

生产价值

  • 数据库 Pod:设置较长的容忍时间,避免脑裂
  • 无状态应用:设置较短的容忍时间,快速故障转移
  • 边缘场景:结合节点条件实现自定义故障检测

3.3 优雅节点关闭(Graceful Node Shutdown)

KEP: 2000-graceful-node-shutdown
状态: Stable
价值: ⭐⭐⭐⭐⭐(运维利器)

节点维护是运维的日常任务。在 1.36 之前,kubectl drain 需要手动执行,且缺乏对 Pod 优先级的细粒度控制。

配置示例

# kubelet 配置
shutdownGracePeriod: 30s
shutdownGracePeriodCriticalPods: 10s

Pod 优先级配置

apiVersion: v1
kind: Pod
metadata:
  annotations:
    cluster-autoscaler.kubernetes.io/terminate-after-scale-down: "true"
spec:
  priorityClassName: system-cluster-critical  # 关键 Pod,最后关闭
  terminationGracePeriodSeconds: 60

关闭流程

  1. 节点收到关闭信号(systemd inhibitor)
  2. Kubelet 停止接受新 Pod
  3. 按优先级逆序终止 Pod(普通 → 重要 → 关键)
  4. 等待 terminationGracePeriodSeconds
  5. 强制终止剩余进程
  6. 节点关闭

生产建议

# 检查节点关闭配置
kubectl get nodes -o jsonpath='{.items[*].status.conditions[?(@.type=="GracefulNodeShutdown")]}'

# 模拟节点关闭(测试环境)
systemctl reboot
# 观察 Pod 迁移过程
kubectl get pods --all-namespaces -o wide --watch

3.4 内存管理器(Memory Manager)

KEP: 1769-memory-manager
状态: Stable
价值: ⭐⭐⭐⭐(性能敏感场景)

对于 NUMA 架构的服务器,内存访问的局部性对性能影响巨大。内存管理器确保 Pod 的内存分配在正确的 NUMA 节点上,避免跨节点访问带来的延迟。

Kubelet 配置

memoryManagerPolicy: Static
reservedMemory:
  - numaNode: 0
    limits:
      memory: 1Gi
  - numaNode: 1
    limits:
      memory: 1Gi

Pod 配置

apiVersion: v1
kind: Pod
spec:
  containers:
  - name: high-performance-app
    resources:
      limits:
        memory: "4Gi"
        cpu: "4"
    env:
    - name: MEMORY_MANAGER_POLICY
      value: "Strict"

适用场景

  • 高性能计算(HPC)
  • 实时数据处理
  • 游戏服务器
  • 金融交易系统

四、Beta 功能前瞻:29 项增强的实验价值

4.1 JobSet:AI 训练任务的编排利器

状态: Beta
KEP: 3998-jobset
价值: ⭐⭐⭐⭐⭐(AI 训练必备)

分布式 AI 训练通常需要多个 Job 协同工作:参数服务器、Worker、Evaluator。JobSet 提供了一种声明式的方式来管理这些关联 Job。

典型配置

apiVersion: jobset.x-k8s.io/v1alpha2
kind: JobSet
metadata:
  name: llm-training
spec:
  replicatedJobs:
  - name: ps
    template:
      spec:
        parallelism: 2
        completions: 2
        template:
          spec:
            containers:
            - name: tensorflow
              image: tensorflow/tensorflow:latest-gpu
              command: ["python", "train.py", "--role=ps"]
  - name: worker
    template:
      spec:
        parallelism: 4
        completions: 4
        template:
          spec:
            containers:
            - name: tensorflow
              image: tensorflow/tensorflow:latest-gpu
              command: ["python", "train.py", "--role=worker"]
              resources:
                limits:
                  nvidia.com/gpu: 2

核心优势

  1. 统一生命周期:所有关联 Job 一起启动、一起终止
  2. 失败策略:支持 FailFast(一个失败全部终止)或 Continue(继续运行)
  3. 完成条件:可配置整体完成策略

4.2 MultiCIDR:更灵活的网络分配

状态: Beta
KEP: 2593-multiple-cluster-cidrs
价值: ⭐⭐⭐⭐(大规模集群)

对于大规模集群,单个 Pod CIDR 往往不够用。MultiCIDR 允许为不同节点组分配不同的 CIDR 段。

apiVersion: networking.k8s.io/v1
kind: ClusterCIDR
metadata:
  name: default-cidr
spec:
  nodeSelector:
    nodeSelectorTerms:
    - matchExpressions:
      - key: kubernetes.io/os
        operator: In
        values:
        - linux
  perNodeHostBits: 8
  ipv4: "10.244.0.0/16"
---
apiVersion: networking.k8s.io/v1
kind: ClusterCIDR
metadata:
  name: gpu-nodes-cidr
spec:
  nodeSelector:
    nodeSelectorTerms:
    - matchExpressions:
      - key: node-type
        operator: In
        values:
        - gpu
  perNodeHostBits: 8
  ipv4: "10.245.0.0/16"

4.3 Windows Host Networking:混合操作系统支持

状态: Beta
KEP: 3500-windows-host-networking
价值: ⭐⭐⭐(Windows 容器场景)

对于需要与 Windows 主机网络紧密集成的容器,这个功能允许 Pod 直接使用主机的网络命名空间。

apiVersion: v1
kind: Pod
spec:
  hostNetwork: true
  nodeSelector:
    kubernetes.io/os: windows
  containers:
  - name: windows-app
    image: mcr.microsoft.com/windows/servercore:ltsc2022

注意事项

  • 仅支持 Windows Server 2022 及更高版本
  • 需要特定的 CNI 插件支持
  • 安全性考虑:与 Linux hostNetwork 类似,需要严格限制使用场景

五、Alpha 功能探索:18 项创新的未来图景

5.1 PodLevelResources:更细粒度的资源控制

状态: Alpha
KEP: 4113-pod-level-resources
价值: ⭐⭐⭐⭐⭐(未来方向)

当前 Kubernetes 的资源管理是在容器级别,但某些场景需要在 Pod 级别进行限制:

  • Sidecar 模式:主容器 + 多个 Sidecar 共享资源配额
  • Init 容器:初始化阶段的资源消耗需要计入总配额
apiVersion: v1
kind: Pod
spec:
  resources:
    limits:
      cpu: "2000m"
      memory: "2Gi"
    claims:
    - name: shared-gpu
      resourceClaimTemplateName: gpu-claim
  containers:
  - name: app
    resources:
      claims:
      - name: shared-gpu
  - name: sidecar
    resources:
      claims:
      - name: shared-gpu

5.2 容器检查点(Forensic Container Checkpointing)

状态: Alpha
KEP: 2008-forensic-container-checkpointing
价值: ⭐⭐⭐⭐(调试利器)

基于 CRIU(Checkpoint/Restore in Userspace),可以在不停止容器的情况下创建检查点,用于:

  • 故障排查:保存故障现场,离线分析
  • 安全取证:保存可疑容器状态
  • 调试:在开发环境恢复生产状态
# 创建检查点
kubectl checkpoint create my-pod --container=app -o checkpoint.tar.gz

# 在另一节点恢复
crictl restore --import checkpoint.tar.gz

六、生产实践:升级路径与最佳实践

6.1 升级策略

阶段一:评估(1-2 周)

  1. 兼容性检查

    # 使用 kubepug 检查弃用 API
    kubepug --k8s-version=v1.36.0
    
    # 检查节点兼容性
    kubectl get nodes -o jsonpath='{.items[*].status.nodeInfo.kubeletVersion}'
    
  2. 依赖验证

    • CNI 插件版本(Calico、Cilium、Flannel)
    • CSI 驱动版本
    • Ingress Controller 版本
    • 监控栈(Prometheus、Grafana)

阶段二:测试环境验证(2-3 周)

  1. 功能测试

    • 原地资源更新
    • 优雅节点关闭
    • 新 API 版本
  2. 性能基准

    • Pod 启动时间
    • API Server 延迟
    • 调度吞吐量
  3. 故障演练

    • 节点故障转移
    • 网络分区
    • 控制平面高可用

阶段三:生产滚动升级(2-4 周)

# 1. 升级控制平面
kubeadm upgrade apply v1.36.0

# 2. 升级 kubelet(逐节点)
kubectl drain node-1 --ignore-daemonsets
apt-get update && apt-get install kubelet=1.36.0-00
systemctl restart kubelet
kubectl uncordon node-1

# 3. 验证
kubectl get nodes
kubectl get pods --all-namespaces

6.2 关键配置调整

API Server

# 启用新功能门
--feature-gates=InPlacePodVerticalScaling=true,JobSet=true

# 调整资源限制
--max-requests-inflight=800
--max-mutating-requests-inflight=400

Kubelet

# 内存管理器
memoryManagerPolicy: Static
reservedMemory:
  - numaNode: 0
    limits:
      memory: 1Gi

# 优雅关闭
shutdownGracePeriod: 30s
shutdownGracePeriodCriticalPods: 10s

# 原地更新
--feature-gates=InPlacePodVerticalScaling=true

Scheduler

# GPU 调度插件
profiles:
- schedulerName: default-scheduler
  plugins:
    filter:
      enabled:
      - name: NodeResourcesFit
      - name: VolumeBinding
    score:
      enabled:
      - name: NodeResourcesFit
        weight: 100

6.3 监控与告警

关键指标

# Prometheus 规则
groups:
- name: k8s-1.36
  rules:
  - alert: PodResizeFailed
    expr: kube_pod_status_resize{type="Failed"} > 0
    for: 5m
    annotations:
      summary: "Pod 原地更新失败"
      
  - alert: GracefulShutdownStuck
    expr: time() - kube_node_status_last_shutdown_time > 300
    for: 1m
    annotations:
      summary: "节点优雅关闭超时"
      
  - alert: MemoryManagerNUMAViolation
    expr: kubelet_memory_manager_numa_violations_total > 0
    for: 5m
    annotations:
      summary: "内存管理器 NUMA 违规"

七、未来展望:Kubernetes 的 AI 原生之路

7.1 2026 年云原生四大趋势

根据 KubeCon Europe 2026 和 CNCF 的调查,以下趋势正在重塑云原生生态:

趋势一:AI 工作负载主导增长

  • GPU 调度将成为标配功能
  • 向量数据库与 Kubernetes 深度集成
  • 模型服务(Model Serving)标准化

趋势二:边缘 Kubernetes 成为实时处理标准

  • 制造业、医疗、零售等行业大规模采用
  • 轻量级发行版(K3s、MicroK8s)持续优化
  • 断网自治与云端协同能力增强

趋势三:可观测性平台化

  • 从工具级(Prometheus、Grafana)向平台级演进
  • OpenTelemetry 成为事实标准
  • AI 驱动的异常检测与根因分析

趋势四:安全左移(Shift Left Security)

  • 供应链安全(Sigstore、SLSA)
  • 运行时安全(eBPF、Falco)
  • 策略即代码(OPA、Kyverno、Kubewarden)

7.2 Kubernetes 1.37 展望

虽然 1.36 刚刚发布,但社区已经在规划 1.37 的方向:

  • Sidecar 容器 GA:正式支持 Init 容器之后的 Sidecar 生命周期管理
  • 动态资源分配(DRA):更灵活的设备插件机制
  • 集群级资源配额:跨命名空间的资源管理能力
  • 更智能的调度:基于机器学习的调度决策

八、总结:拥抱变革,稳健前行

Kubernetes 1.36 是一个承前启后的版本。它既巩固了云原生的基础能力(原地更新、优雅关闭、内存管理),又开启了 AI 基础设施的新篇章(JobSet、GPU 调度优化、边缘支持)。

对于技术团队,我的建议是:

  1. 短期(1-3 个月):在测试环境验证 1.36,重点关注原地更新和优雅关闭
  2. 中期(3-6 个月):制定升级计划,优先升级非关键集群
  3. 长期(6-12 个月):全面迁移到 1.36,探索 JobSet 等 Beta 功能

Kubernetes 的演进从未停止,而 1.36 标志着它正式迈入了 AI 原生时代。作为工程师,我们需要保持学习,拥抱变革,同时保持对生产环境的敬畏之心。

毕竟,技术的价值不在于新,而在于解决问题


参考资料

  1. Kubernetes 1.36 Release Notes
  2. KEP 1287: In-Place Pod Vertical Scaling
  3. KEP 2000: Graceful Node Shutdown
  4. KEP 1769: Memory Manager
  5. JobSet Documentation
  6. KubeCon Europe 2026 Keynotes

本文首发于程序员茄子,转载请注明出处。

推荐文章

Go 协程上下文切换的代价
2024-11-19 09:32:28 +0800 CST
php strpos查找字符串性能对比
2024-11-19 08:15:16 +0800 CST
JavaScript数组 splice
2024-11-18 20:46:19 +0800 CST
全栈工程师的技术栈
2024-11-19 10:13:20 +0800 CST
使用临时邮箱的重要性
2025-07-16 17:13:32 +0800 CST
浅谈CSRF攻击
2024-11-18 09:45:14 +0800 CST
PHP 的生成器,用过的都说好!
2024-11-18 04:43:02 +0800 CST
PHP来做一个短网址(短链接)服务
2024-11-17 22:18:37 +0800 CST
Vue3中的自定义指令有哪些变化?
2024-11-18 07:48:06 +0800 CST
Mysql允许外网访问详细流程
2024-11-17 05:03:26 +0800 CST
程序员茄子在线接单