"Sidecar" containers in Kubernetes pods

7/26/2016

I'd like a multi-container pod with a couple of components:

  • A "main" container which contains a build job
  • A "sidecar" container which contains an HTTP proxy, used by the "main" container

This seems to fit well with the pod design philosophy as described in the Kubernetes documentation, but I believe so long as the "sidecar" runs, the pod is kept alive. In my case, the "main" container is not long-lived; once it exits, the "sidecar" should be terminated.

How can I achieve this?

-- obeattie
kubernetes

5 Answers

4/16/2019

The feature might not have been available when the question was asked but, one can define postStart and preStop handlers for pod now. You could probably define preStop in your main container to kill sidecar container.

-- Hem
Source: StackOverflow

7/31/2019

You could use the liveness probe to help with this. The probe checks for the "main" container (as well as any of its own checks). Once the main container goes down, the liveness probe fails, and then the pod should be recycled.

-- Arun Ramakrishnan
Source: StackOverflow

7/28/2016

A pod is running as long as one of the containers is running. If you need them to exit together, you have to arrange that the sidecar dies. We do not have a notion of "primary" vs "secondary" containers wrt lifecycle, though that's sort of interesting.

One option would be to use an emptyDir volume and write a file telling the sidecar "time to go". The sidecar would exit when it sees that file.

-- Tim Hockin
Source: StackOverflow

9/17/2019

For anyone still looking for an answer to this, the sidecar feature is being developed and should be out in v1.17 of Kubernetes, which will have this exact requested behaviour.

From the proposal:

One-line enhancement description: Containers can now be a marked as sidecars so that they startup before normal containers and shutdown after all other containers have terminated.

https://github.com/kubernetes/enhancements/issues/753

UPDATE: looks like it's planned for v1.18 now

-- Jonas D
Source: StackOverflow

7/27/2016

Have you considered using the http://kubernetes.io/docs/user-guide/jobs/ resource?

-- bfallik
Source: StackOverflow