<p>I have a ReplicationController containing two containers in a pod, the first is a long-living pod, the second does a few maintenance tasks when the RC starts up a POD. However as the second container is short lived, it stops itself when it finishes its start tasks. 
When Kuberbetes notices this, it kills off the POD and starts a new one...</p>

<p>What is the correct way to handle this in Kuberbetes?</p>

<p>As you already noticed, by design all containers in a pod are destined to live and die together. It's a bit hard to tell what your best alternative would be without knowing what kind of maintenance task your sidekick needs to perform exactly. Generally speaking, I can think of three approaches:</p>

<ol>
<li><p>Keep your maintenance container running. This is probably a fairly ugly solution as it wastes resources. It really only makes sense if the maintenance task can benefit from running periodically.</p></li>
<li><p>Move the maintenance task over to your primary container, effectively converting your multi-container pod into a single-container one. I assume that you can run the task asynchronously (as you would already be able to run it in a separate container); if, for some reasons, you cannot, consider modifying <a href="http://kubernetes.io/docs/user-guide/pod-states/#container-probes" rel="nofollow">readiness and liveness probes</a> accordingly so that your container is given enough time to finish any boot-up procedures before becoming eligible for termination.</p></li>
<li><p>Consider adjusting your design so that the maintenance task may run as a separate pod (or maybe even as a <a href="http://kubernetes.io/docs/user-guide/jobs/" rel="nofollow">job</a>). You'd then need to manage any dependencies and wiring yourself by putting together Kubernetes primitives properly.</p></li>
</ol>
