手动重新启动成功/失败的窗格

时间:2016-05-13 21:24:17

标签: kubernetes

在vmware上的coreos上运行kubernetes v1.2.2:

我有一个pod,其重启策略设置为Never。是否可以手动启动相同的pod备份?

在我的用例中,我们将在此pod中有一个postgres实例。如果它崩溃了,我想让pod处于失败状态,直到我们能够更接近地查看它为什么失败然后手动启动它。而不是尝试使用Always。的重启策略重新启动。

通过kubectl来看,似乎没有手动启动选项。我可以删除并重新创建,但我认为这将从我的容器中删除数据。也许我应该在我的主机上安装一个本地卷,我不应该担心丢失数据?

这是我的样本pod yaml。我似乎无法重新启动健康'吊舱。

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

2 个答案:

答案 0 :(得分:2)

根据您的问题和评论,您可能希望重新启动失败的容器以保留其状态和数据。实际上,应用容器和容器被认为是相对短暂的(而不是持久的)实体。当容器崩溃时,其文件将丢失,而kubelet将以干净状态重新启动它。

要保留您的数据和日志,请在部署中使用persistent volume types。这将允许您跨容器重新启动保留数据。

答案 1 :(得分:0)

一种可能满足您需求的简单方法是添加一个唯一的实例标签,也许是一个简单的计数器。如果每个pod标记的方式不同,您可以根据需要启动任意数量的pod,并保留尽可能多的失败实例。

e.g。第一个pod

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

第二个吊舱

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