Para solucionar algunos problemas, necesito cambiar manualmente el estado de un trabajo en ejecución de active a successful para que se complete. El trabajo en sí es un bucle infinito que no termina. La opción para eliminar el trabajo no se puede usar porque pone el trabajo en un estado fallido.
Actualización: el trabajo en realidad no falla, sino que se atasca y, por lo tanto, lo elimino, lo que hace que pase al estado fallido. Además, no es posible cambiar el código del trabajo (no es un script bash).
Gracias
Me parece que está más interesado en tratar los síntomas de su problema que las razones reales detrás de ellos.
Esto es para una solución rápida de problemas en los que no quiero detener el resto para agregar una omisión para el estado de este trabajo.
Creo que la forma más rápida sería asegurarse de que sus otros trabajos sean menos confiables en este en lugar de intentar obligar a Kubernetes a marcar este trabajo/pod como exitoso.
Lo más cercano que pude llegar a su objetivo fue curl api-server directamente con kube-proxy . Pero esa solución solo funciona si el trabajo falla primero y, lamentablemente, no funciona con pods en ejecución.
Para este ejemplo, utilicé un trabajo que sale con el estado 1:
containers: - name: job image: busybox args: - /bin/sh - -c - date; echo sleeping....; sleep 5s; exit 1; Luego ejecute kubectl-proxy :
➜ ~ kubectl proxy --port=8080 & [1] 18372 ➜ ~ Starting to serve on 127.0.0.1:8080Y publique el estado en el servidor api:
curl localhost:8080/apis/batch/v1/namespaces/default/jobs/job3/status -XPATCH -H "Accept: application/json" -H "Content-Type: application/strategic-merge-patch+json" -d '{"status": {"succeeded": 1}}' ], "startTime": "2021-01-28T14:02:31Z", "succeeded": 1, "failed": 1 } }%Si luego verifico el estado del trabajo, puedo ver que se marcó como completado.
➜ ~ k get jobs NAME COMPLETIONS DURATION AGE job3 1/1 45s 45s PD. Intenté de esta manera configurar el estado como exitoso/completado para el trabajo o el módulo, pero no fue posible. El estado cambió por un momento y luego controller-manager revirtió el estado a ejecución. Tal vez esta pequeña window con el estado cambiado podría ser lo que desea y le permitirá continuar con sus otros trabajos. Simplemente asumo esto ya que no conozco los detalles.
Para obtener más información sobre cómo acceder a la API de esa manera, consulte los documentos de uso de kubectl .