Announcement

👇Official Account👇

Welcome to join the group & private message

Article first/tail QR code

Skip to content

KubeCon Europe 2026 深度复盘:82% 采用率 vs 7% AI 部署率——云原生的第二次创始时刻

2026 年 6 月,阿姆斯特丹。KubeCon Europe 2026 不再是关于 Kubernetes 采用的问题——那场战争已经结束了。这是关于在其上运行什么,以及云原生生态能否在 AI 时代真正执行。

CNCF 执行董事 Jonathan Bryce 在主题演讲中抛出了两个数字:

  • Kubernetes 采用率:82%
  • AI 日常部署率:仅 7%

这不是差距,而是鸿沟

核心矛盾:平台已就绪,但 AI 还没准备好

KubeCon 2026 传递的核心信号是:云原生基础设施已经成熟,但 AI 的生产级运营化还在挣扎。多年来我们谈论容器、编排和微服务是难题,今天这些问题已经解决。新的前沿是推理——模型如何在生产环境中实际运行、扩展和提供价值。

成熟度悖论

云原生成熟度 vs AI 运营成熟度:

云原生基础设施            AI 工作负载运营
┌──────────────────┐     ┌──────────────────┐
│ K8s 采用率 82%    │     │ AI 日部署率 7%    │
│ 容器标准化完成    │     │ 模型生命周期混乱  │
│ 微服务模式成熟    │     │ 推理优化碎片化    │
│ CI/CD 广泛落地    │     │ GPU 利用率低下    │
│ 安全策略 GA 化   │     │ 成本控制缺失      │
│                  │     │                  │
│ → 基础设施已就绪  │     │ → 执行差距巨大    │
└──────────────────┘     └──────────────────┘

这个问题不是技术性的——Kubernetes 完全可以跑 AI 工作负载。真正的问题是运营化:模型部署、推理优化、成本治理、安全合规这些上层能力还不成熟。

今天的 AI 就像 2015 年的容器

我们正在看到早期云采用的重演:

2015 年容器2026 年 AI
提升和迁移行为直接把模型扔进 Pod
竖起和祈祷部署完不管成本
糟糕的成本控制GPU利用率 < 30%
碎片化工具50+ 模型服务框架
上层缺乏标准化无标准推理 API

区别在于?风险成倍增加——AI 的基础设施成本比传统应用高一个数量级,错误决策的经济代价更大。

Kubernetes 正在成为 AI 操作系统

主题演讲中的另一个关键数据:三分之二的生成式 AI 工作负载已经在 Kubernetes 上运行

这是 KubeCon 2026 的隐藏故事。Kubernetes 不再仅仅是基础设施,它正在成为AI 操作系统

AI 控制平面的兴起

在美国和欧洲的许多对话都指向一个新兴想法:AI 需要自己的控制平面。不仅仅是基础设施编排,还包括:

AI 控制平面的五层架构:

┌──────────────────────────────────────────────────┐
│ 第 5 层:成本治理                                │
│   GPU 利用率监控、推理成本优化、预算控制          │
├──────────────────────────────────────────────────┤
│ 第 4 层:策略执行                                │
│   模型安全策略、数据合规、审计日志                │
├──────────────────────────────────────────────────┤
│ 第 3 层:推理优化                                │
│   批处理、模型缓存、动态批大小、量化              │
├──────────────────────────────────────────────────┤
│ 第 2 层:模型生命周期                            │
│   版本管理、A/B 测试、回滚、模型签名              │
├──────────────────────────────────────────────────┤
│ 第 1 层:基础设施编排                            │
│   GPU 分配、Pod 调度、水平扩展                    │  ← Kubernetes 已解决
└──────────────────────────────────────────────────┘

Kubernetes 1.36 正在第 1 层向第 2-3 层演进

参与者的变化

这次 KubeCon 的参与者与上一代完全不同:

  • 英伟达:从硅片到软件推动 AI 工厂堆栈
  • AWS / Google Cloud:将 Kubernetes 更深入地嵌入 AI 平台
  • IBM / Red Hat:大规模运营开源,连接企业 IT 与 AI 工作负载
  • 新兴厂商:vLLM、TensorRT-LLM、KServe 等推理框架百花齐放

它们共同代表了一种强大的融合:云原生遇见 AI 原生,开源作为连接组织

但问题依然存在:仅仅因为 AI 可以在 Kubernetes 上运行,并不意味着它是优化的、高效的或经济可行的。

Kubernetes 1.36 "Haru":安全 + AI 双焦点

K8s 1.36 代号 Haru,2026 年 4 月 22 日正式发布,包含 70 项增强功能:18 项 Stable、25 项 Beta、25 项 Alpha。两大焦点:安全加固AI 工作负载支持

安全焦点:User Namespaces GA

User Namespaces 经过多个版本周期的打磨,终于在 1.36 达到 GA。这是一个真正的安全改进:

yaml
# 启用 User Namespaces
apiVersion: v1
kind: Pod
metadata:
  name: secure-pod
spec:
  securityContext:
    userNamespace: true  # ← 新的 GA 功能
  containers:
  - name: app
    image: my-app:latest
    securityContext:
      runAsUser: 0       # 容器内 root
      # 但在宿主机上映射为非特权用户

安全效果:容器内的 root 用户在宿主机上映射为非特权用户。即使进程逃逸容器,也不会获得宿主机管理权限。

传统容器:
┌──────────────────┐
│ 容器 root (UID 0)│────→ 宿主机 root (UID 0) ← 逃逸即 root!
└──────────────────┘

User Namespaces:
┌──────────────────┐
│ 容器 root (UID 0)│────→ 宿主机 UID 100000+ ← 逃逸也无特权!
└──────────────────┘

对多租户集群的意义:这是威胁模型的根本改变。共享基础设施上的容器逃逸漏洞不再自动授予宿主机 root 权限。

Mutating Admission Policies GA

Mutating Admission Policies 达到 GA 是另一个重要里程碑。之前需要部署和维护独立的 webhook 服务器来实现请求变异,现在可以用 CEL(Common Expression Language)直接定义变异逻辑:

yaml
apiVersion: admissionregistration.k8s.io/v1
kind: MutatingAdmissionPolicy
metadata:
  name: auto-sidecar-inject
spec:
  matchConstraints:
    resources:
      - apiGroups: [""]
        kinds: ["Pod"]
  conditions:
    - expression: "has(object.metadata.annotations['inject-sidecar'])"
  mutations:
    - patchSet:
        jsonPatches:
          - path: "/spec/containers/-"
            operation: Add
            value: '{"name": "observability-sidecar", "image": "otel/injector:v1"}'

优势

  • 无需额外基础设施(不再需要 webhook 服务器)
  • 更低的延迟(CEL 原生执行 vs HTTP 调用)
  • 更少的运维负担

AI 工作负载焦点:DRA 增强

Dynamic Resource Allocation(DRA)的多项增强达到 Beta 并默认启用:

yaml
# DRA 分区设备:GPU 可以被分区和共享
apiVersion: resource.k8s.io/v1beta1
kind: ResourceClaim
metadata:
  name: gpu-partition
spec:
  devices:
    requests:
    - name: gpu
      deviceClassName: gpu.nvidia.com
      # 请求 GPU 的 1/4 分区而非整卡
      allocationMode: Fractional
      count: 25  # 25% 的 GPU

核心变化

旧模式新模式
整卡分配(一卡一 Pod)分区分配(一卡多 Pod)
GPU 利用率无法保证DRA Consumable Capacity 确保
GPU 故障无恢复机制DRA Device Taints + Tolerations

Workload-Aware Preemption:AI 训练的救星

这是 K8s 1.36 对 AI 工作负载最具影响力的 Alpha 功能。

旧行为的问题:当一个 8 节点的分布式训练任务需要抢占时,调度器逐个 Pod 抢占,可能导致 7 个节点运行但无法推进——部分抢占失败模式

旧的 Pod 级别抢占:

分布式训练 Job(8 rank):
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
│ rank-0 │ rank-1 │ rank-2 │ rank-3 │ rank-4 │ rank-5 │ rank-6 │ rank-7 │
│  ✅    │  ✅    │  ❌    │  ✅    │  ✅    │  ✅    │  ✅    │  ✅    │
│ 运行中 │ 运行中 │ 被抢占 │ 运行中 │ 运行中 │ 运行中 │ 运行中 │ 运行中 │
└────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘
                           ↑ 7/8 运行但无法推进 → 浪费资源!

新行为:PodGroup 作为整体抢占单元,调度器先验证高优先级组能否实际放置:

yaml
# PodGroup 抢占定义
apiVersion: scheduling.x-k8s.io/v1alpha1
kind: PodGroup
metadata:
  name: training-job-group
spec:
  minMember: 8        # 最少需要 8 个 Pod 同时运行
  scheduleStartTime: "2026-07-01"
  minResources:
    nvidia.com/gpu: 8
新的 PodGroup 级别抢占:

验证阶段:高优先级 Job 能否放置?
┌─────────────────────────────────────────┐
│ 检查:需要 8 GPU → 当前只有 6 GPU 可用 │
│ → 等待,不抢占 → 不浪费资源             │
└─────────────────────────────────────────┘

执行阶段:资源充足时整体抢占
┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
│ rank-0 │ rank-1 │ rank-2 │ rank-3 │ rank-4 │ rank-5 │ rank-6 │ rank-7 │
│  ✅    │  ✅    │  ✅    │  ✅    │  ✅    │  ✅    │  ✅    │  ✅    │
│ 全部运行 → 训练可以推进                 │
└────────┴────────┴────────┴────────┴────────┴────────┴────────┴────────┘

其他关键增强

yaml
# In-Place Vertical Scaling(Beta)
# 可以调整 Pod 的 CPU/内存而不重启容器
apiVersion: v1
kind: Pod
metadata:
  name: model-server
spec:
  containers:
  - name: inference
    image: vllm-server:latest
    resources:
      requests:
        cpu: "4"
        memory: "8Gi"
      limits:
        cpu: "8"        # 可在运行时调整
        memory: "16Gi"
  resizePolicy:         # 新字段
  - resourceName: cpu
    restartPolicy: NotRequired  # 调整 CPU 不重启
  - resourceName: memory
    restartPolicy: RestartContainer  # 调整内存需要重启

ResizeDeferred 事件:当调整无法立即应用(节点容量不足)时,Pod 在当前大小继续运行,kubelet 在容量释放后自动重试。

经济性:开源模型的 248 亿美元节约

Linux 基会研究的一个关键洞察:优化开放模型可以释放 248 亿美元的全球 AI 年度节约。这不是增量的,而是结构性的。

我们正在进入一个AI 策略即成本结构策略的阶段:

封闭 vs 开开的经济对比:

封闭模型生态:
┌──────────────────────────────────────┐
│ 高推理成本(API 计费)               │
│ 平台锁定(无法迁移)                 │
│ 原始性能优先                         │
│ → 成本结构被动                       │
└──────────────────────────────────────┘

开放模型 + 云原生:
┌──────────────────────────────────────┐
│ 低推理成本(自部署)                 │
│ 可移植性(Kubernetes 标准)           │
│ 经济效率优先                         │
│ → 成本结构主动                       │
└──────────────────────────────────────┘

这是经典的行业张力:封闭模型 vs 开放模型、平台锁定 vs 云原生可移植性、原始性能 vs 经济效率。

Go 开发者的 AI 成本优化实战

go
// 基于 Kubernetes 事件的成本优化控制器
package controller

import (
    "context"
    "fmt"
    "math"

    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "k8s.io/client-go/kubernetes"
)

type GPUCostOptimizer struct {
    clientset  *kubernetes.Clientset
    gpuCostPerHour float64  // GPU 单价($/小时)
    targetUtilization float64 // 目标利用率
}

func (o *GPUCostOptimizer) Optimize(ctx context.Context) error {
    // 获取所有 GPU Pod
    pods, err := o.clientset.CoreV1().Pods("").List(ctx, metav1.ListOptions{
        LabelSelector: "nvidia.com/gpu.present=true",
    })
    if err != nil {
        return err
    }

    var totalCost float64
    var wastedCost float64

    for _, pod := range pods.Items {
        // 计算 GPU 利用率(从 metrics 获取)
        utilization := o.getGPUUtilization(pod.Name, pod.Namespace)

        // 计算成本
        hoursRunning := o.getHoursRunning(pod)
        podCost := hoursRunning * o.gpuCostPerHour
        totalCost += podCost

        // 计算浪费(利用率低于目标)
        if utilization < o.targetUtilization {
            wasteRatio := o.targetUtilization - utilization
            wastedCost += podCost * wasteRatio

            // 建议缩容
            fmt.Printf("⚠️  Pod %s/%s: GPU利用率 %.1f%% < 目标 %.1f%%, 浪费 $%.2f\n",
                pod.Namespace, pod.Name,
                utilization*100, o.targetUtilization*100,
                podCost*wasteRatio)

            // 推荐动作
            if utilization < 0.1 {
                fmt.Printf("   → 建议:终止 Pod(利用率 < 10%%\n")
            } else if utilization < 0.3 {
                fmt.Printf("   → 建议:In-Place Resize 到更小 GPU 配额\n")
            }
        }
    }

    fmt.Printf("\n=== GPU 成本报告 ===\n")
    fmt.Printf("总成本: $%.2f/月\n", totalCost*730) // 730 小时/月
    fmt.Printf("浪费成本: $%.2f/月 (%.1f%%)\n",
        wastedCost*730,
        math.Min(100, wastedCost/totalCost*100))

    return nil
}

func (o *GPUCostOptimizer) getGPUUtilization(podName, namespace string) float64 {
    // 实际实现:从 Prometheus/DCGM 获取 GPU 利用率
    // 这里返回模拟数据
    return 0.25 // 25% 利用率(常见场景)
}

AI 推理优化:从碎片化到标准化

KubeCon 2026 上最活跃的讨论之一是推理优化。当前生态有 50+ 模型服务框架,但缺乏标准化:

2026 年 AI 推理生态(碎片化):

┌─────────────────────────────────────────────┐
│ 模型服务框架(50+)                          │
│                                               │
│ vLLM | TensorRT-LLM | KServe | Triton        │
│ TGI  | LoRAX       | SGLang  | Inferless     │
│ ...(还有很多)                                │
│                                               │
│ 问题:                                        │
│ - 无标准推理 API                               │
│ - 无标准模型格式                               │
│ - 无标准 GPU 分配协议                          │
│ - 无标准成本计量                               │
└─────────────────────────────────────────────┘

正在标准化(K8s AI 一致性工作组):

┌─────────────────────────────────────────────┐
│ Kubernetes AI 推理标准                        │
│                                               │
│ 1. DRA → GPU 分配标准化                      │
│ 2. PodGroup → 训练任务标准化                  │
│ 3. In-Place Resize → 运行时优化标准化         │
│ 4. KServe → 推理服务标准化                    │
│                                               │
│ 目标:像 Ingress 标准化 HTTP 路由一样         │
│       标准化 AI 推理路由                       │
└─────────────────────────────────────────────┘

Go 语言推理服务模板

go
// 基于 K8s In-Place Resize 的自适应推理服务
package main

import (
    "context"
    "log"
    "net/http"
    "os"
    "os/signal"
    "syscall"
    "time"

    "github.com/prometheus/client_golang/prometheus"
    "github.com/prometheus/client_golang/prometheus/promhttp"
)

type AdaptiveInferenceServer struct {
    currentGPUAllocation float64  // 当前 GPU 配额
    targetLatencyMs      float64  // 目标延迟
    maxBatchSize         int      // 最大批大小
    metrics             *InferenceMetrics
}

type InferenceMetrics struct {
    requestLatency  prometheus.Histogram
    batchSize       prometheus.Gauge
    gpuUtilization  prometheus.Gauge
    requestsPerSec  prometheus.Counter
}

func NewAdaptiveInferenceServer() *AdaptiveInferenceServer {
    metrics := &InferenceMetrics{
        requestLatency: prometheus.NewHistogram(prometheus.HistogramOpts{
            Name:    "inference_latency_ms",
            Help:    "Inference request latency",
            Buckets: prometheus.DefBuckets,
        }),
        batchSize: prometheus.NewGauge(prometheus.GaugeOpts{
            Name: "inference_batch_size",
            Help: "Current batch size",
        }),
        gpuUtilization: prometheus.NewGauge(prometheus.GaugeOpts{
            Name: "gpu_utilization_percent",
            Help: "GPU utilization percentage",
        }),
        requestsPerSec: prometheus.NewCounter(prometheus.CounterOpts{
            Name: "inference_requests_total",
            Help: "Total inference requests",
        }),
    }

    prometheus.MustRegister(
        metrics.requestLatency,
        metrics.batchSize,
        metrics.gpuUtilization,
        metrics.requestsPerSec,
    )

    return &AdaptiveInferenceServer{
        currentGPUAllocation: 1.0,  // 默认整卡
        targetLatencyMs:      100,  // 100ms 目标延迟
        maxBatchSize:         32,
        metrics:             metrics,
    }
}

func (s *AdaptiveInferenceServer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
    start := time.Now()

    // 动态调整批大小(基于当前负载和延迟目标)
    batchSize := s.calculateBatchSize()

    // 执行推理
    result, err := s.infer(r, batchSize)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 记录指标
    latency := time.Since(start).Milliseconds()
    s.metrics.requestLatency.Observe(float64(latency))
    s.metrics.requestsPerSec.Inc()

    w.Header().Set("Content-Type", "application/json")
    w.Write(result)
}

func (s *AdaptiveInferenceServer) calculateBatchSize() int {
    // 根据当前延迟和 GPU 利用率动态调整
    // 目标:在延迟约束下最大化吞吐
    recentLatency := s.getRecentAvgLatency()
    gpuUtil := s.getCurrentGPUUtilization()

    if recentLatency < s.targetLatencyMs*0.5 && gpuUtil < 0.5 {
        // 延迟低、利用率低 → 增加批大小提升吞吐
        return min(s.maxBatchSize, s.maxBatchSize*2/3)
    }

    if recentLatency > s.targetLatencyMs {
        // 延迟超标 → 减小批大小
        return max(1, s.maxBatchSize/4)
    }

    // 正常范围
    return s.maxBatchSize / 2
}

func main() {
    server := NewAdaptiveInferenceServer()

    // 指标端点(供 Prometheus/K8s 抓取)
    http.Handle("/metrics", promhttp.Handler())
    http.Handle("/infer", server)

    // 健康检查端点
    http.HandleFunc("/healthz", func(w http.ResponseWriter, r *http.Request) {
        w.WriteHeader(http.StatusOK)
        w.Write([]byte("ok"))
    })

    // 优雅关闭
    ctx, cancel := context.WithCancel(context.Background())
    defer cancel()

    go func() {
        sigCh := make(chan os.Signal, 1)
        signal.Notify(sigCh, syscall.SIGTERM, syscall.SIGINT)
        <-sigCh
        cancel()
    }()
}

KubeCon 2026 的关键趋势

1. AI 控制平面兴起

CNCF 中突出显示的 Kubernetes AI 一致性工作等项目标志着事情的发展方向——AI 工作负载在 Kubernetes 上的标准化。这还处于早期,但我们之前在容器方面看过这部电影:

标准化演进路径:

容器时代:
混乱 → 工具爆炸 → 标准化 → 平台整合

AI 时代:
我们正处于第 1 步和第 2 步之间
   ↑ ↑ ↑ ↑
   └─┘ └─┘
   碎片化    工具爆发

2. 从基础设施到智能

云原生已经向上移动了堆栈:

演进路径:

昨天:基础设施抽象    → Docker / K8s
今天:应用程序编排    → Service Mesh / GitOps
明天:智能编排        → AI 控制平面

       ← 基础设施层 →       ← 应用层 →       ← 智能层 →

3. 开源是连接组织

英伟达、AWS、Google Cloud 和 Red Hat 的共同参与代表了一种强大融合:云原生遇见 AI 原生,开源作为连接组织。Kubernetes 作为中立控制平面的定位是关键——它不偏向任何云提供商。

4. FinOps 进入 AI 领域

GPU 成本优化成为 KubeCon 热门话题。248 亿美元的经济节约数据让 FinOps 从传统云成本管理延伸到 AI 成本治理:

传统 FinOps vs AI FinOps:

传统 FinOps:
- CPU/内存成本优化
- 存储成本优化
- 网络流量成本优化

AI FinOps(新增):
- GPU 利用率优化
- 推理成本优化
- 模型大小 vs 推理速度权衡
- 训练成本(数据量 × GPU 小时)
- 开源模型 vs 商业 API 成本对比

Go 开发者的云原生 AI 机遇

对于 Go 开发者来说,KubeCon 2026 传递了一个明确信号:Go 在云原生 AI 生态中占据核心位置。Kubernetes 的控制器、Operator、CRD 全部用 Go 编写。AI 控制平面的每一层都需要 Go:

go
// AI 推理控制器 Operator 框架
package controllers

import (
    "context"

    appsv1 "k8s.io/api/apps/v1"
    corev1 "k8s.io/api/core/v1"
    metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    "sigs.k8s.io/controller-runtime/pkg/client"
    "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
)

const inferenceFinalizer = "inference.ailifecycle.io/finalizer"

// InferenceReconciler 管理推理服务的完整生命周期
type InferenceReconciler struct {
    client.Client
    Scheme *runtime.Scheme
}

func (r *InferenceReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) {
    var inference aiv1.InferenceService
    if err := r.Get(ctx, req.NamespacedName, &inference); err != nil {
        return ctrl.Result{}, client.IgnoreNotFound(err)
    }

    // 1. 根据模型大小计算 GPU 需求
    gpuRequest := calculateGPURequest(inference.Spec.Model)

    // 2. 创建 Deployment(利用 DRA 分区设备)
    deploy := &appsv1.Deployment{
        ObjectMeta: metav1.ObjectMeta{
            Name:      inference.Name + "-server",
            Namespace: inference.Namespace,
        },
        Spec: appsv1.DeploymentSpec{
            Replicas: ptr.To(inference.Spec.Replicas),
            Selector: &metav1.LabelSelector{
                MatchLabels: map[string]string{"app": inference.Name},
            },
            Template: corev1.PodTemplateSpec{
                ObjectMeta: metav1.ObjectMeta{
                    Labels: map[string]string{"app": inference.Name},
                    Annotations: map[string]string{
                        "inject-sidecar": "true",  // 触发 MutatingAdmissionPolicy
                    },
                },
                Spec: corev1.PodSpec{
                    SecurityContext: &corev1.PodSecurityContext{
                        UserNamespace: ptr.To(true),  // K8s 1.36 GA 功能
                    },
                    Containers: []corev1.Container{
                        {
                            Name:  "inference-server",
                            Image: inference.Spec.Image,
                            Resources: corev1.ResourceRequirements{
                                Requests: gpuRequest,
                                Limits:   gpuRequest,
                            },
                            ResizePolicy: []corev1.ContainerResizePolicy{
                                {
                                    ResourceName:  corev1.ResourceCPU,
                                    RestartPolicy: corev1.NotRequiredResizePolicy,
                                },
                                {
                                    ResourceName:  corev1.ResourceMemory,
                                    RestartPolicy: corev1.RestartContainerResizePolicy,
                                },
                            },
                        },
                    },
                },
            },
        },
    }

    if err := controllerutil.SetControllerReference(&inference, deploy, r.Scheme); err != nil {
        return ctrl.Result{}, err
    }

    if err := r.Create(ctx, deploy); err != nil {
        return ctrl.Result{}, err
    }

    // 3. 创建 PodGroup(分布式训练)
    if inference.Spec.DistributedTraining {
        podGroup := createPodGroup(inference)
        if err := r.Create(ctx, podGroup); err != nil {
            return ctrl.Result{}, err
        }
    }

    return ctrl.Result{}, nil
}

func calculateGPURequest(spec aiv1.InferenceServiceSpec) corev1.ResourceRequirements {
    // 根据模型大小计算 GPU 需求
    modelSizeGB := spec.ModelSizeGB

    var gpuCount int64
    if modelSizeGB < 7 {
        gpuCount = 1  // 小模型:1 GPU
    } else if modelSizeGB < 14 {
        gpuCount = 2  // 中模型:2 GPU
    } else if modelSizeGB < 70 {
        gpuCount = 4  // 大模型:4 GPU
    } else {
        gpuCount = 8  // 超大模型:8 GPU
    }

    return corev1.ResourceRequirements{
        Requests: corev1.ResourceList{
            corev1.ResourceName("nvidia.com/gpu"): resource.MustParse(fmt.Sprintf("%d", gpuCount)),
            corev1.ResourceCPU:                   resource.MustParse("4"),
            corev1.ResourceMemory:                resource.MustParse("16Gi"),
        },
        Limits: corev1.ResourceList{
            corev1.ResourceName("nvidia.com/gpu"): resource.MustParse(fmt.Sprintf("%d", gpuCount)),
            corev1.ResourceCPU:                   resource.MustParse("8"),
            corev1.ResourceMemory:                resource.MustParse("32Gi"),
        },
    }
}

Go 在云原生 AI 中的具体角色

角色Go 实现K8s 1.36 利用
GPU 调度控制器Custom Controller + DRADRA Partitionable Devices
推理服务 OperatorKubebuilder OperatorIn-Place Resize
成本优化引擎FinOps ControllerKubelet Metrics + GPU Metrics
安全策略执行CEL Admission PolicyUser Namespaces + MAP
训练任务编排PodGroup ControllerWorkload-Aware Preemption

KubeCon 2026 升级注意事项

K8s 1.36 的升级需要关注以下移除:

bash
# 检查是否使用了被移除的功能

# 1. gitRepo volume plugin(自 v1.11 废弃,1.36 正式移除)
kubectl get pods -A -o json | jq '.items[] | select(.spec.volumes[]?.gitRepo != null)'

# 如果存在,迁移到 init container 或 git-sync
# 旧方式:
# volumes:
# - name: code
#   gitRepo:
#     repository: "https://github.com/example/repo"
#     revision: "main"

# 新方式:
# initContainers:
# - name: git-sync
#   image: git-sync:v4
#   args: ["--repo", "https://github.com/example/repo", "--branch", "main"]

# 2. IPVS mode in kube-proxy(移除)
kubectl -n kube-system get configmap kube-proxy -o yaml | grep mode

# 如果使用 IPVS,迁移到 iptables 或 eBPF
# iptables: kube-proxy --mode=iptables
# eBPF: 安装 Cilium/Calico eBPF dataplane

# 3. Flex-volume support in kubeadm(移除)
# 4. Portworx in-tree driver(移除)

总结:云原生的第二次创始时刻

KubeCon Europe 2026 传递的最终信号:

平台已准备就绪,采用率已经存在,生态系统庞大。缺少的是执行。执行就是一切。

这是云原生要么演化为 AI 经济控制平面,要么被做得更好的人抽象化的拐点。如果 CNCF 和开源社区能够弥合 AI 执行差距,他们不仅保持相关性——他们还定义计算的下一个十年。

维度状态趋势
Kubernetes 采用82%(成熟)→ AI 操作系统
AI 日常部署7%(挣扎)→ 标准化进行中
安全加固User Namespaces GA→ 多租户安全基准
AI 工作负载支持DRA Beta + PodGroup Alpha→ GPU 分区 + 整体抢占
经济性248 亿美元节约潜力→ 开放模型 + 云原生可移植
Go 生态核心位置→ AI 控制平面首选语言

如果他们做不到,重心就会转移。这就是我们现在所处的时刻。毫无疑问,这是云原生的第二个创始时代。

参考资料

上次更新于: