!k8sでhostNetwork: trueのときにLivenessProbeがうまくいかない
!! 無指定の時
>>
Liveness: http-get http://:11249/healthz delay=30s timeout=5s period=10s #success=1 #failure=3
<<
>>
58s 58s 1 kubelet, kubernetes spec.containers{nghttpx-ingress-lb} Warning Unhealthy Liveness probe failed: Get http://実機のIP:11249/healthz: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
<<
ログは実機のIPとなっているが、Livenessのところが空文字になっているのが気になる
!! あえてIPを指定してみる(127.0.0.1)
>>
Liveness: http-get http://127.0.0.1:11249/healthz delay=30s timeout=5s period=10s #success=1 #failure=3
<<
>>
2m 52s 2 kubelet, kubernetes spec.containers{nghttpx-ingress-lb} Warning Unhealthy Liveness probe failed: Get http://127.0.0.1:11249/healthz: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
<<
!! あえてIPを指定してみる(実機のIP)
>>
Liveness: http-get http://実機のIP:11249/healthz delay=30s timeout=5s period=10s #success=1 #failure=3
<<
>>
10m 1m 5 kubelet, kubernetes spec.containers{nghttpx-ingress-lb} Normal Killing Killing container with id docker://nghttpx-ingress-lb:Container failed liveness probe.. Container will be killed and recreated.
<<
Livenessのところに実機のIPが入るようになったが、まだ駄目である
!考察
probeを実行しているのはkubelet
kubeletはsystemdで起動している。
127.0.0.1でも実機のIPでもヘルスチェックはできるはず。
実機からcurlでヘルスチェックポートをたたくと正しくヘルスチェックできている。
5643382
wiki
1509180731