Restart a Successful/Failed pod manually

5/13/2016

running kubernetes v1.2.2 on coreos on vmware:

I have a pod with the restart policy set to Never. Is it possible to manually start the same pod back up?

In my use case we will have a postgres instance in this pod. If it was to crash I would like to leave the pod in a failed state until we can look at it closer to see why it failed and then start it manually. Rather than try to restart with a restartpolicy of Always.

Looking through kubectl it doesnt seem like there is a manual start option. I could delete and recreate but i think this would remove the data from my container. Maybe I should be mounting a local volume on my host, and I should not need to worry about losing data?

this is my sample pod yaml. I dont seem to be able to restart the 'health' pod.

apiVersion: v1
kind: Pod
metadata:
  name: health
  labels:
    environment: dev
    app: health
spec:
  containers:
  - image: busybox
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
    name: busybox
  restartPolicy: Never
-- FeatherKing
kubernetes

2 Answers

5/14/2016

One simple method that might address your needs is to add a unique instance label, maybe a simple counter. If each pod is labelled differently you can start as many as you like and keep around as many failed instances as you like.

e.g. first pod

apiVersion: v1
kind: Pod
metadata:
  name: health
  labels:
    environment: dev
    app: health
    instance: 0
 spec:
    containers: ...

second pod

apiVersion: v1
kind: Pod
metadata:
  name: health
  labels:
    environment: dev
    app: health
    instance: 1
 spec:
    containers: ...
-- bfallik
Source: StackOverflow

2/11/2017

Based on your question and comments sounds like you want to restart a failed container to retain its state and data. In fact, application containers and pods are considered to be relatively ephemeral (rather than durable) entities. When a container crashes its files will be lost and kubelet will restart it with a clean state.

To retain your data and logs use persistent volume types in your deployment. This will let you to preserve data across container restarts.

-- Kamran
Source: StackOverflow