インフラ系SEの技術メモ

雑なエンジニアが低信頼性のメモを書いています。参考程度にとどめてください。

(Kubernetes)apiserverが落ちていてもlivenessはkubeletが起動しつづける

rediness / livenessはkubeletが担当

コンテナの生き死にをハンドリングするLiveness Probe、Readiness Probeですが、これはMaster(kube-apiserver)が行うわけではないです。

公式ページにも

kubeletは、Liveness Probeを使用して、コンテナをいつ再起動するかを認識します。 例えば、アプリケーション自体は起動しているが、処理を継続することができないデッドロック状態を検知することができます。 このような状態のコンテナを再起動することで、バグがある場合でもアプリケーションの可用性を高めることができます。

とありますが、実際にAPIサーバを落としてみて起動停止の確認をしてみました。

apiserverを落とした状態で・・

APIサーバーを落とすのでkubectlは通らなくなります。
が、その下のレイヤー(dockerなど)でのコンテナの状態は見れるので確認すると

# docker ps | grep live
aff9ce125835        e7d168d7db45                                                                                                     "/bin/sh -c 'touch..."   5 seconds ago       Up 4 seconds                            k8s_liveness_liveness-test_default_60bb753d-c833-48f5-9969-169f9768df15_83
b4055450d093        k8s.gcr.io/pause:3.6                                                                                             "/pause"                 4 hours ago         Up 4 hours                              k8s_POD_liveness-test_default_60bb753d-c833-48f5-9969-169f9768df15_0

定期的にlivenessを検知が聞いて再起動していることが確認できました。