2017-10-28
/diary/20171028140446
k8sでhostNetwork: trueのときにLivenessProbeがうまくいかない
無指定の時
> pre
<<
> pre
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)
> pre
<<
> pre
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)
> pre
<<
> pre
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でヘルスチェックポートをたたくと正しくヘルスチェックできている。
/diary/20171028214037
docker registryをself-hostするときの注意
host
- resolve
- kubednsのIPを含める
- pullできるようになる
- nsswitch.confも必要に応じて編集
- dockerのDNS
- kubednsのIPを含める、外の名前も引けるように外のDNSサーバも含める
- drone-agentからpushできるようになる