The Native Kubernetes executor solution utilizes Kubernetes Jobs to run both Batch Change and Precise indexing jobs. In Kubernetes clusters that utilize a service mesh layer such as Isitio, a networking proxy sidecar container will be injected into any pod that is created in the cluster, even if the pods are created by a "short-lived" Job controllers.
In these circumstances, the termination of the application container (i.e., the batch change or precise indexing step job container) does not automatically trigger the termination of the Istio proxy sidecar container, leaving the Pod in a "hung" state and preventing the execution of the Executor job from progressing further.
Proposed Solution
One solution to this problem would be to implement a PreStop Lifecycle Hook to send a kill signal to the Istio sidecar container after the job step execution is complete.
Problem Description
The Native Kubernetes executor solution utilizes Kubernetes Jobs to run both Batch Change and Precise indexing jobs. In Kubernetes clusters that utilize a service mesh layer such as Isitio, a networking proxy sidecar container will be injected into any pod that is created in the cluster, even if the pods are created by a "short-lived" Job controllers.
In these circumstances, the termination of the application container (i.e., the batch change or precise indexing step job container) does not automatically trigger the termination of the Istio proxy sidecar container, leaving the Pod in a "hung" state and preventing the execution of the Executor job from progressing further.
Proposed Solution
One solution to this problem would be to implement a PreStop Lifecycle Hook to send a kill signal to the Istio sidecar container after the job step execution is complete.
Related Istio issue for this topic: https://github.com/istio/istio/issues/11659