# NEX-Spracherkennung (whisper.cpp, M4000) auf gpu-pve52, umgezogen von Docker Compose (Task 6.2, D6). # Host-Netz wie zuvor: Port 8178 auf der VM-Adresse, die ufw-Regel der VM (nur appsrv08) gilt weiter. # Image stammt aus dem Compose-Build und wurde in das containerd von k3s importiert (Rolle nex-speech-k3s). apiVersion: apps/v1 kind: Deployment metadata: name: nex-stt namespace: nex labels: {app: nex-stt} spec: replicas: 1 strategy: {type: Recreate} # Host-Port 8178 kann nur einmal belegt sein selector: matchLabels: {app: nex-stt} template: metadata: labels: {app: nex-stt} spec: runtimeClassName: nvidia hostNetwork: true dnsPolicy: ClusterFirstWithHostNet nodeSelector: kubernetes.io/hostname: gpu-pve52 containers: - name: whisper image: knaster/nex-whisper:v1.9.4-cu12.6 imagePullPolicy: Never env: - {name: WHISPER_PORT, value: "8178"} - {name: WHISPER_MODEL, value: /models/whisper/ggml-large-v3-turbo.bin} - {name: WHISPER_LANGUAGE, value: de} - {name: WHISPER_BEAM_SIZE, value: "5"} - {name: WHISPER_EXTRA_ARGS, value: ""} resources: limits: {nvidia.com/gpu: 1} securityContext: readOnlyRootFilesystem: true volumeMounts: - {name: models, mountPath: /models/whisper, readOnly: true} - {name: run, mountPath: /run/nex-whisper} startupProbe: httpGet: {path: /health, port: 8178, host: 127.0.0.1} periodSeconds: 5 failureThreshold: 60 readinessProbe: httpGet: {path: /health, port: 8178, host: 127.0.0.1} periodSeconds: 30 livenessProbe: httpGet: {path: /health, port: 8178, host: 127.0.0.1} periodSeconds: 30 failureThreshold: 3 volumes: - name: models hostPath: {path: /srv/models/whisper, type: Directory} - name: run emptyDir: {medium: Memory, sizeLimit: 512Mi}