Document self-hosted Kubernetes OOM vs scheduling failures
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 72/100
- Tipo de issue
- Documentación
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- kubernetes
- Área
- devops, documentation
Línea de trabajo
Start with docs/src/content/docs/platform/self-hosting/troubleshooting.mdx, then review managed-kubernetes.mdx, reference.mdx, runners.mdx, monitoring.mdx, and security-and-networking.mdx. Use the cited worker Kubernetes classifications and server fault names to distinguish OOMKilled from unschedulable pods, and verify the kubectl checks, resource ownership, SIGTERM guidance, and failed-Job cleanup wording. Done means the two scenarios and cross-page resource guidance are consistent without invented baselines or retry details.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
Self-hosted Kubernetes troubleshooting does not distinguish a running task pod killed for memory from a new or replacement pod that cannot schedule. Operators only get a one-line unschedulable note and a generic “ensure sufficient resources” step. Task CPU and memory are operator-owned (pod_template and optional runner instance shape), not the worker Deployment’s 100m/128Mi defaults. Exit 143 is SIGTERM and must not be documented as OOM.
Reproduction
No product reproduction was required. Current pages omit the two failure modes; worker and server code already classify them separately (OOMKilled → container_oom; PodScheduled=False/Unschedulable after unschedulable_timeout → unschedulable).
Acceptance criteria
- Troubleshooting documents two scenarios: (1) a running task container terminated with Kubernetes reason
OOMKilled, and (2) a new/replacement pod that stays unschedulable (FailedScheduling/ insufficient CPU or memory), with different kubectl checks and remedies. - Resource guidance distinguishes the long-lived worker Deployment from per-task Job pods, and states that an explicit runner instance shape sets the task container’s matching CPU/memory requests and limits (overriding
pod_templateon those axes). - Docs never claim
143 = OOM; they tell operators to correlate SIGTERM with pod reason, events, and eviction/drain/deadline. - No blanket worker size. Recommend sizing to the workload (runner or
pod_template) and raising only the constrained resource. - Adjacent pages (managed Kubernetes, reference, runners, monitoring, security) do not contradict resource ownership or failed-Job cleanup.
Proposed solution direction
Add the two scenarios on the existing troubleshooting page and tighten Kubernetes resource examples on the managed Kubernetes and reference pages. Cross-link runners for per-workload shapes. Do not invent a baseline or document retry internals.
References
- Current docs:
docs/src/content/docs/platform/self-hosting/troubleshooting.mdx(task failures; unschedulable one-liner),managed-kubernetes.mdx(worker.resourcesvs examplepod_templateresources),reference.mdx(unschedulable_timeout,pod_template),runners.mdx(instance shape; no self-hosted application),monitoring.mdx(oz_worker_tasks_max_concurrent),security-and-networking.mdx(cleanup wording). - Worker (
warpdotdev/oz-agent-workermain):internal/worker/kubernetes.go—applyInstanceShapeToContainer(requests=limits per axis),classifyTerminatedReason("OOMKilled")→container_oom,shouldFailUnschedulablePod(default 30s), SIGTERM guidance for exit 143, failed Jobs left for TTL (default 24h), Helmworker.resources100m/128Mi is the daemon only. - Server:
warp-server/logic/ai/ambient_agents/workers/selfhosted/websocket.go(InstanceShapeoptional;container_oomandunschedulableare operator faults);runner_instance_shape.go(self-hosted shapes are not plan-capped). - Document: worker vs task resources; OOM vs scheduling; SIGTERM ≠ OOM; workload-specific sizing via runner or
pod_template; kubectldescribe pod/ events;unschedulable_timeout; concurrency vs node allocatable. - Omit: customer names, retry counts/Temporal internals, invented baselines,
143 = OOM, future resume/checkpoint behavior. - Engineering questions (do not block docs for the two scenarios): confirm public wording that failed Jobs remain until Job TTL; whether self-hosted runner shape should be documented on
runners.mdxas well as Kubernetes pages.
- Lenguaje dominante
- MDX
- Estrellas
- 43
- Forks
- 24
- Merge medio
- 1 d 13 h
- PR fusionados (30 d)
- 136
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de warpdotdev/docs
-
documentation improve or update documentation priority/low triage
Dificultad 2/5 Medio día Aptitud para principiantes 86/100
warpdotdev/docs#782 · 1 comentario ·
-
documentation ready-to-implement warpy-factory
Dificultad 1/5 Menos de una hora Aptitud para principiantes 35/100
warpdotdev/docs#576 · 1 comentario ·
-
improve or update documentation priority/medium triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
warpdotdev/docs#381 · 1 comentario ·
Todos los issues de warpdotdev/docs
Issues similares
-
Solved site promotion gate fails on runner PHP patch drift (expects 8.2.33, runner installs 8.2.34) Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Automattic/blocks-engine#2161 ·
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 60/100
github/gh-aw-mcpg#13748 ·
-
agentic-workflows
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
personalrobotics/tsr#128 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
Azure/azure-functions-docker#1257 ·