Pod

Create file sleep_po.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: sleep
spec:
  restartPolicy: OnFailure
  containers:
    - image: busybox:1.37.0-glibc
      imagePullPolicy: IfNotPresent
      name: sleep-busybox
      command: ["sh", "-c", "trap exit INT TERM; sleep 1m & wait"]
      resources:
        requests:
          cpu: "1"
          memory: 100Mi
        limits:
          cpu: "1"
          memory: 100Mi

Apply to the cluster:

$ kubectl apply -f sleep_po.yaml
pod/sleep created

Note

The default value of spec.restartPolicy is Always, which makes the pod restart again and again.

Watch events:

$ kubectl get po sleep -owide -w
NAME    READY   STATUS              RESTARTS   AGE   IP       NODE     NOMINATED NODE   READINESS GATES
sleep   0/1     ContainerCreating   0          0s    <none>   las1     <none>           <none>
sleep   0/1     ContainerCreating   0          1s    <none>   las1     <none>           <none>
sleep   1/1     Running             0          1s    192.168.135.2   las1     <none>           <none>
sleep   0/1     Completed           0          61s   192.168.135.2   las1     <none>           <none>
sleep   0/1     Completed           0          62s   192.168.135.2   las1     <none>           <none>
sleep   0/1     Completed           0          63s   192.168.135.2   las1     <none>           <none>
sleep   0/1     Completed           0          7m18s   192.168.135.2   las1     <none>           <none>
sleep   0/1     Completed           0          7m18s   192.168.135.2   las1     <none>           <none>

The last two lines of output have not be produced until we terminate it on another console with:

$ kubectl delete po sleep
pod "sleep" deleted