Kubernetes 1.28 新特性解读:CRI v1alpha2 与 PodSecurity 标准升级

一、容器运行时接口(CRI)v1alpha2

CRI 是 Kubernetes 与容器运行时(如 containerd、CRI-O)交互的核心接口。v1alpha2 版本带来以下关键改进:

  1. 资源隔离增强
    新增 ContainerResources 字段,支持更细粒度的资源配置:

    message ContainerResources {
      LinuxContainerResources linux = 1;  // CPU/内存限制
      WindowsContainerResources windows = 2;  // Windows 专用配置
    }
    

    允许为不同操作系统定制资源策略,解决混合环境调度问题。

  2. 设备管理升级
    引入 DeviceRequests 协议,统一 GPU/FPGA 等异构设备管理:

    type DeviceRequest struct {
      Count int32    // 设备数量
      Type  string   // 设备类型(如 "nvidia.com/gpu")
    }
    

    简化设备插件开发,支持动态设备分配。

  3. 运行时类(RuntimeClass)优化
    通过 RuntimeHandler 字段实现多运行时无缝切换:

    apiVersion: node.k8s.io/v1
    kind: RuntimeClass
    metadata:
      name: gvisor
    handler: runsc  # 指定 containerd 使用 gVisor
    

    无需修改 Pod 配置即可切换沙箱运行时。

  4. 性能监控标准化
    新增 ContainerStats 数据结构,统一指标采集: $$ \text{CPU 使用率} = \frac{\sum \Delta \text{CPU 周期}}{\Delta t \times \text{CPU 核心数}} \times 100% $$ 提供跨运行时的监控一致性。


二、PodSecurity 标准升级

PodSecurity 替代已弃用的 PodSecurityPolicy,提供更简化的安全准入控制:

  1. 强制执行模式(Enforce)默认启用
    在 1.28 中,PodSecurity 准入控制器默认生效,策略层级:

    级别限制内容典型场景
    Privileged无限制系统组件
    Baseline禁止特权容器普通应用
    Restricted禁止特权+只读根文件系统高敏感应用
  2. 豁免机制(Exemptions)强化
    支持按命名空间/用户/RuntimeClass 豁免:

    apiVersion: admissionregistration.k8s.io/v1
    kind: ValidatingAdmissionPolicy
    spec:
      exemptions:
        namespaces: ["kube-system"]  # 豁免系统命名空间
    

  3. 审计日志增强
    违反策略事件记录详细上下文:

    {
      "kind": "Event",
      "message": "Pod 'web-app' violated: allowPrivilegeEscalation=false",
      "annotations": {
        "violated_policy": "baseline"
      }
    }
    

  4. 与 PSA(Pod Security Admission)集成
    通过标签动态调整安全级别:

    apiVersion: v1
    kind: Namespace
    metadata:
      labels:
        pod-security.kubernetes.io/enforce: baseline
    


三、升级影响与最佳实践
  1. CRI 迁移建议

    • 测试阶段:在非生产集群启用 featureGate: CRIV2Alpha=true
    • 兼容性:v1alpha2 与 v1alpha1 并行运行 2 个版本
    kubelet --container-runtime-endpoint=unix:///run/cri.sock --cri-version=v1alpha2
    

  2. PodSecurity 实施路径

    graph LR
    A[评估现有工作负载] --> B[标记命名空间基线级别]
    B --> C[逐步应用Restricted策略]
    C --> D[利用审计模式监控异常]
    

  3. 关键注意事项

    • CRI v1alpha2:需容器运行时 ≥ containerd 1.7 / CRI-O 1.26
    • PodSecurity:避免同时启用旧版 PSP 控制器
    • 策略冲突时遵循规则:
      $$ \text{最终决策} = \min(\text{集群策略}, \text{命名空间策略}) $$

升级提示:建议通过 kubectl convert 工具自动转换旧版 PSP 策略,并利用 kube-score 进行预检扫描。

更多推荐