在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
答案 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: ...