以下のlivenessProbe( 例 から抽出)は正常に機能しています。
livenessProbe:
exec:
command:
- cat
- /tmp/healthy
しかし、livenessProbeが機能していません(ポッドは継続的に再起動されます)。 YAMLは以下です
apiVersion: v1
kind: Pod
metadata:
labels:
test: liveness-test
name: liveness
spec:
containers:
- name: liveness
args:
- /bin/bash
- -c
- /home/my_home/run_myprogram.sh; sleep 20
image: liveness:v0.6
securityContext:
privileged: true
livenessProbe:
exec:
command:
- /home/my_home/check.sh
initialDelaySeconds: 10
periodSeconds: 5
/home/my_home/check.sh(実行中のプロセスの数が1または0のときにポッドを再起動するため)は以下であり、事前にテストされています。
#!/bin/sh
if [ $(ps -ef | grep -v grep | grep my-program | wc -l) -lt 2 ]; then
exit 1
else
exit 0
fi
この問題は Golang Command API に関連しています。 livenessProbeを以下のように変更しました
livenessProbe:
exec:
command:
- /bin/sh
- -c
- /home/test/check.sh