hereのドキュメントを参照してください。
Kubernetes(バージョン1.5以降)は、 ノードに到達できないため、ポッドを削除しません。到達不能ノード上で実行されているポッドは、タイムアウトの後に 'Terminating'または 'Unknown'状態に入ります。ユーザが 到達不能ノード上でポッドを正常に削除しようとすると、ポッドは と入力することもあります。
- Nodeオブジェクトが削除される(どちらかによって、またはノードコントローラによって)ポッドは、このような状態は がapiserverから除去することができる唯一の方法は以下の通りです。
- 応答しないノード上のkubeletが応答を開始すると、 がPodを強制終了し、apiserverからエントリを削除します。
- ユーザーがポッドを強制的に削除します。
これはStatefulSetは、安全性を優先することができますkubernetes 1.5で導入された行動変化、でした。
- インスタンスは、Nodeオブジェクトが削除されずにシャットダウンさ:
は、以下の場合を区別する方法はありません。
- 問題のノードとkubernetes-masterの間にネットワークパーティションが導入されています。
これらのケースの両方が、Kubernetesマスターによって応答しないノード上のkubeletとみなされます。 2番目のケースでは、別のノードに置換ポッドをすばやく作成する場合は、StatefulSetによって保証されている最大で1つのセマンティクスに違反し、同じIDを持つ複数のポッドが異なるノードで実行されます。最悪の場合、ステートフルなアプリケーションを実行すると、脳とデータの損失が発生する可能性があります。
ほとんどのクラウドプロバイダーでは、インスタンスが削除されると、Kubernetesはノードも削除されていることが分かり、StatefulSetポッドを別の場所で再作成できます。
ただし、オンデマンドで実行している場合、これは発生しない可能性があります。ノードオブジェクトをパワーダウンするときにkubernetesからノードオブジェクトを削除するか、Kubernetesのノード概念を利用可能な実際のノードと同期させた調整ループを持つことをお勧めします。
さらに詳しい情報はgithub issueにあります。