Kubernetes 当主容器退出时,如何使k8s吊舱自行退出?
我使用的是k8s吊舱的sidecard模式,其中有两个容器:主容器和sidecar容器。我希望pod状态仅取决于主容器(例如,如果主容器失败/完成,pod应处于相同状态),并丢弃sidecard容器Kubernetes 当主容器退出时,如何使k8s吊舱自行退出?,kubernetes,microservices,kubernetes-pod,Kubernetes,Microservices,Kubernetes Pod,我使用的是k8s吊舱的sidecard模式,其中有两个容器:主容器和sidecar容器。我希望pod状态仅取决于主容器(例如,如果主容器失败/完成,pod应处于相同状态),并丢弃sidecard容器 有一种优雅的方法可以做到这一点吗?不幸的是,restartPolicy标志适用于pod中的所有容器,因此简单的解决方案实际上不起作用。你确定你的逻辑不应该放在一个容器里,而不是一个侧车里吗?如果它确实需要一个侧车,让它在你的逻辑结束时永远休眠。根据: Pod正在运行,有两个容器。容器1失败退出 记录
有一种优雅的方法可以做到这一点吗?不幸的是,restartPolicy标志适用于pod中的所有容器,因此简单的解决方案实际上不起作用。你确定你的逻辑不应该放在一个容器里,而不是一个侧车里吗?如果它确实需要一个侧车,让它在你的逻辑结束时永远休眠。根据: Pod正在运行,有两个容器。容器1失败退出 记录失败事件 如果重新启动策略为:
- 始终:重新启动容器;Pod阶段保持运行状态李>
- OnFailure:重新启动容器;Pod阶段保持运行状态
- 从不:不重新启动容器;Pod阶段保持运行状态
- 始终:重新启动容器;Pod阶段保持运行状态
- OnFailure:重新启动容器;Pod阶段保持运行状态
- 从不:Pod阶段变得失败
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness
name: liveness-exec
spec:
containers:
- name: liveness1
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- touch /test-pd/healthy; sleep 30; rm -rf /test-pd/healthy; sleep 30
livenessProbe:
exec:
command:
- cat
- /test-pd/healthy
initialDelaySeconds: 5
periodSeconds: 5
volumeMounts:
- mountPath: /test-pd
name: test-volume
- name: liveness2
image: k8s.gcr.io/busybox
args:
- /bin/sh
- -c
- sleep 120
livenessProbe:
exec:
command:
- cat
- /test-pd2/healthy
initialDelaySeconds: 5
periodSeconds: 5
volumeMounts:
- mountPath: /test-pd2
name: test-volume
restartPolicy: Never
volumes:
- name: test-volume
hostPath:
# directory location on host
path: /data
type: Directory
如果有帮助,请告诉我。您能将sidecar的liveness probe更改为no op吗?您能分享一下您的经验吗。最后——如何解决这个问题?