Veröffentlicht am

CNCF AI Conformance: GPU, KServe und Kueue auf Kubernetes

Teilen:
Authors

Kubernetes AI Conformance: CNCF Standards fuer KI-Workloads auf Kubernetes

TL;DR

  • Die CNCF Cloud Native AI White Paper definiert Standards fuer KI-Workloads auf Kubernetes -- von GPU-Management bis Model Serving.
  • Kueue und Volcano bieten faire Scheduling-Strategien fuer GPU-intensive Training-Jobs mit Quota-Management.
  • KServe standardisiert Model Serving mit Auto-Scaling, Canary Deployments und Multi-Framework-Support.
  • AI Governance auf Kubernetes umfasst Model Lineage, Audit-Trails und EU AI Act Compliance.
  • GPU-Ressourcen lassen sich mit NVIDIA MPS und Time-Slicing effizienter zwischen Workloads aufteilen.

CNCF Cloud Native AI Landscape

Die Cloud Native Computing Foundation hat KI als strategisches Thema definiert. Das CNCF Cloud Native AI White Paper beschreibt eine Referenzarchitektur fuer KI-Workloads auf Kubernetes.

Die wesentlichen Saeulen:

  • Infrastructure: GPU-Cluster, Storage, Networking
  • Scheduling: Faire Verteilung von GPU-Ressourcen
  • Model Lifecycle: Training, Serving, Monitoring
  • Governance: Audit, Compliance, Responsible AI
  • Observability: GPU-Metriken, Model-Performance, Kosten

Kubernetes ist dabei die zentrale Plattform -- nicht weil es die einzige Option ist, sondern weil es den Lifecycle von KI-Workloads vollstaendig abdeckt: vom verteilten Training ueber das Serving bis zum Monitoring. Fuer den Einstieg in KI auf Kubernetes: Kubernetes fuer AI und Machine Learning.

GPU Resource Management Standards

GPU Time-Slicing fuer bessere Auslastung

Eine GPU wird selten zu 100% ausgelastet -- besonders bei Inference-Workloads. Time-Slicing teilt eine physische GPU zwischen mehreren Pods.

apiVersion: v1
kind: ConfigMap
metadata:
  name: nvidia-device-plugin-config
  namespace: kube-system
data:
  config.yaml: |
    version: v1
    sharing:
      timeSlicing:
        renameByDefault: false
        failRequestsGreaterThanOne: false
        resources:
          - name: nvidia.com/gpu
            replicas: 4

Mit replicas: 4 kann eine physische GPU von 4 Pods gleichzeitig genutzt werden. Jeder Pod sieht nvidia.com/gpu: 1 -- bekommt aber ein Viertel der Rechenzeit.

Multi-Instance GPU (MIG)

Fuer NVIDIA A100 und H100 GPUs bietet MIG eine hardwarebasierte Partitionierung:

apiVersion: v1
kind: ConfigMap
metadata:
  name: mig-config
  namespace: gpu-operator
data:
  config.yaml: |
    version: v1
    mig-configs:
      all-balanced:
        - devices: all
          mig-enabled: true
          mig-devices:
            "3g.40gb": 2
            "1g.10gb": 1

Weitere Details zu GPU-Workloads: Kubernetes GPU-Workloads.

Workload Scheduling: Kueue und Volcano

Kueue: Kubernetes-natives Job Queuing

Kueue ist das CNCF-Projekt fuer faires Scheduling von Batch- und KI-Workloads. Es verwaltet GPU-Quotas ueber Teams hinweg.

# Kueue installieren
kubectl apply --server-side -f   https://github.com/kubernetes-sigs/kueue/releases/download/v0.10.0/manifests.yaml
apiVersion: kueue.x-k8s.io/v1beta1
kind: ResourceFlavor
metadata:
  name: gpu-a100
spec:
  nodeLabels:
    cloud.google.com/gke-accelerator: nvidia-tesla-a100
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: ai-training-queue
spec:
  namespaceSelector: {}
  resourceGroups:
    - coveredResources: ["cpu", "memory", "nvidia.com/gpu"]
      flavors:
        - name: gpu-a100
          resources:
            - name: "cpu"
              nominalQuota: 64
            - name: "memory"
              nominalQuota: 256Gi
            - name: "nvidia.com/gpu"
              nominalQuota: 8
  preemption:
    reclaimWithinCohort: Any
    withinClusterQueue: LowerPriority
---
apiVersion: kueue.x-k8s.io/v1beta1
kind: LocalQueue
metadata:
  name: ml-team-alpha
  namespace: ml-training
spec:
  clusterQueue: ai-training-queue

Training Job mit Kueue

apiVersion: batch/v1
kind: Job
metadata:
  name: llm-finetuning
  namespace: ml-training
  labels:
    kueue.x-k8s.io/queue-name: ml-team-alpha
spec:
  parallelism: 4
  completions: 4
  template:
    spec:
      containers:
        - name: training
          image: registry.internal/llm-trainer:1.5.0
          resources:
            requests:
              cpu: "8"
              memory: 64Gi
              nvidia.com/gpu: 2
            limits:
              cpu: "16"
              memory: 128Gi
              nvidia.com/gpu: 2
          env:
            - name: WORLD_SIZE
              value: "4"
            - name: MASTER_ADDR
              value: llm-finetuning-0
            - name: MASTER_PORT
              value: "29500"
      restartPolicy: OnFailure

Kueue haelt den Job in der Queue bis genuegend GPU-Ressourcen verfuegbar sind. Bei hoeherer Prioritaet kann Kueue niedrig-priorisierte Jobs unterbrechen.

Model Serving Standards: KServe

KServe (ehemals KFServing) ist der CNCF-Standard fuer Model Serving auf Kubernetes.

apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: product-classifier
  namespace: ml-serving
spec:
  predictor:
    model:
      modelFormat:
        name: pytorch
      storageUri: "s3://models/product-classifier/v3"
      resources:
        requests:
          cpu: "2"
          memory: 4Gi
          nvidia.com/gpu: 1
        limits:
          cpu: "4"
          memory: 8Gi
          nvidia.com/gpu: 1
    minReplicas: 1
    maxReplicas: 10
    scaleTarget: 5
    scaleMetric: concurrency

Canary Deployment fuer Modelle

apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
  name: product-classifier
  namespace: ml-serving
spec:
  predictor:
    canaryTrafficPercent: 10
    model:
      modelFormat:
        name: pytorch
      storageUri: "s3://models/product-classifier/v4"
      resources:
        requests:
          nvidia.com/gpu: 1
        limits:
          nvidia.com/gpu: 1
    minReplicas: 1
    maxReplicas: 10

10% des Traffics gehen an v4 des Modells. Bei guter Performance kann der Anteil schrittweise erhoeht werden. Fuer Inference-Optimierung mit NVIDIA Triton: Triton Inference Server auf Kubernetes.

AI Governance und Compliance

EU AI Act Anforderungen auf Kubernetes

Der EU AI Act klassifiziert KI-Systeme nach Risikostufen. Hochrisiko-Systeme (z.B. im Personalwesen, Kreditvergabe) erfordern:

  • Transparenz: Dokumentation der Modell-Entscheidungen
  • Audit-Trail: Nachvollziehbare Trainings- und Serving-Historie
  • Human Oversight: Moeglichkeit menschlicher Eingriffe
  • Robustheit: Tests gegen adversariale Eingaben

Governance-Policies mit OPA Gatekeeper

apiVersion: templates.gatekeeper.sh/v1
kind: ConstraintTemplate
metadata:
  name: k8saiworkloadlabels
spec:
  crd:
    spec:
      names:
        kind: K8sAIWorkloadLabels
  targets:
    - target: admission.k8s.gatekeeper.sh
      rego: |
        package k8saiworkloadlabels

        violation[{"msg": msg}] {
          input.review.object.spec.template.spec.containers[_].resources.limits["nvidia.com/gpu"]
          not input.review.object.metadata.labels["ai.company.de/model-version"]
          msg := "GPU-Workloads muessen das Label ai.company.de/model-version tragen"
        }

        violation[{"msg": msg}] {
          input.review.object.spec.template.spec.containers[_].resources.limits["nvidia.com/gpu"]
          not input.review.object.metadata.labels["ai.company.de/risk-classification"]
          msg := "GPU-Workloads muessen das Label ai.company.de/risk-classification tragen"
        }
---
apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sAIWorkloadLabels
metadata:
  name: require-ai-labels
spec:
  match:
    kinds:
      - apiGroups: ["apps"]
        kinds: ["Deployment", "StatefulSet"]
      - apiGroups: ["batch"]
        kinds: ["Job"]
    namespaces:
      - ml-training
      - ml-serving

Jeder GPU-Workload muss eine Modell-Version und eine Risiko-Klassifizierung tragen -- ohne diese Labels wird das Deployment abgelehnt.

Monitoring fuer KI-Workloads

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: gpu-metrics
  namespace: monitoring
spec:
  selector:
    matchLabels:
      app: nvidia-dcgm-exporter
  endpoints:
    - port: metrics
      interval: 15s

Wichtige GPU-Metriken:

# GPU-Auslastung pro Pod
DCGM_FI_DEV_GPU_UTIL

# GPU-Speicherverbrauch
DCGM_FI_DEV_FB_USED

# GPU-Temperatur (Throttling vermeiden)
DCGM_FI_DEV_GPU_TEMP

# Inference-Latenz (KServe)
revision_request_latencies_bucket

MLOps Standards auf Kubernetes

Fuer eine vollstaendige MLOps-Plattform: Kubeflow ML-Plattform auf Kubernetes.

Standardisierter ML-Workflow

1. Datenaufbereitung    -> Kubernetes Job + PVC
2. Feature Engineering  -> Spark/Dask auf Kubernetes
3. Modell-Training      -> Kueue-gemanagter Job mit GPU
4. Modell-Validierung   -> Kubernetes Job (Metriken nach MLflow)
5. Modell-Registry      -> MLflow Model Registry
6. Modell-Deployment    -> KServe InferenceService
7. Monitoring           -> Prometheus + Grafana
8. Retraining-Trigger   -> CronJob oder Drift-Detection

Fuer MLOps im Enterprise-Umfeld: MLOps auf Kubernetes im Enterprise.

Fazit

AI Conformance auf Kubernetes ist mehr als GPU-Scheduling. Die CNCF-Standards decken den gesamten Lifecycle ab: von der fairen Ressourcenverteilung mit Kueue ueber standardisiertes Model Serving mit KServe bis zur Governance mit OPA Gatekeeper.

Fuer Unternehmen in der EU ist der AI Act ein konkreter Treiber: Modell-Lineage, Audit-Trails und Risiko-Klassifizierung muessen Teil der Plattform sein -- nicht nachtraeglich aufgesetzt.


Verwandte Artikel

Braucht ihr Unterstuetzung bei der Einfuehrung von KI-Workloads auf Kubernetes oder der EU AI Act Compliance? Kontaktiert uns fuer eine individuelle Beratung.

Kubernetes-Beratung gesucht?

Wir helfen deutschen Unternehmen bei der Kubernetes-Implementierung, Migration und Optimierung. DSGVO-konform und praxiserprobt.

📖 Verwandte Artikel

Weitere interessante Beiträge zu ähnlichen Themen