Skip to main content
Day-2 guidance for the Kubernetes delivery forms. For the single-container form, see All-in-One operations.

Ownership

Agree an escalation path before production traffic starts.

Monitoring signals

Prometheus is the metrics baseline. Watch:
  • Pod readiness and restart counts for every service in the release, including Redis.
  • Request success rate, error rate, latency, and time-to-first-audio.
  • Queue depth, where the application exposes it.
  • GPU utilization and GPU memory.
  • CPU and memory usage against the configured requests and limits.
  • Shared storage usage and latency.
  • Redis availability and latency.
  • Image pull failures and Kubernetes events in the release namespace.
Centralize application logs and retain Kubernetes events long enough to investigate a bad rollout. Redact secrets before sharing any logs outside your environment.

Scaling

Scaling is controlled through Helm values: API replicas, GPU worker replicas, CPU and memory requests, GPU resource requests, and per-worker concurrency. Add a GPU replica only when a GPU is actually free — a pod that requests a GPU on a full cluster stays Pending indefinitely. Validate every scale change with the smoke test and a benchmark run at your expected concurrency, and remember that the first start of a new GPU worker pays the compile cost before it becomes ready.

Backup and retention

Back up:
  • Reference voice archives, if your traffic uses reference ids. In a self-hosted deployment these are durable data, not cache — nothing can re-download them.
  • The offline usage ledger directories, before they are pruned by your own archival process.
  • The values file used for the production release.
  • Secret manager entries.
  • Dashboards and alert rules.
Compile and model caches on shared storage do not need backing up. Losing them costs a slow first start, nothing more.

Upgrades

  1. Review the chart and image changes with Fish Audio.
  2. Render the manifests with your production values file.
  3. Apply to a staging or dry-run cluster if you have one.
  4. Capture the current release history.
  5. Upgrade during an approved window.
  6. Watch rollout status, then run the smoke test.
  7. Keep the previous revision available until the deployment is accepted.

Troubleshooting

Start here:
Collect detail for a single failing pod:
For GPU incidents, add:

Escalating to Fish Audio

Include:
  • Kubernetes version, cloud provider, region, node types, and GPU type.
  • Chart version and the values file with secrets removed.
  • Pod status, relevant events, and logs with secrets redacted.
  • The exact command that failed, with its output.
  • Timestamp and time zone.