Skip to content

Commit b35ca59

Browse files
authored
Merge pull request #38075 from YuikoTakada/ja_non_graceful_node_shutdown
[ja]Update non-graceful node shutdown
2 parents 214db5b + b49b317 commit b35ca59

File tree

1 file changed

+20
-0
lines changed
  • content/ja/docs/concepts/architecture

1 file changed

+20
-0
lines changed

content/ja/docs/concepts/architecture/nodes.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,26 @@ Message: Node is shutting, evicting pods
294294

295295
{{< /note >}}
296296

297+
## ノードの非正常終了 {#non-graceful-node-shutdown}
298+
299+
{{< feature-state state="alpha" for_k8s_version="v1.24" >}}
300+
301+
コマンドがkubeletのinhibitor locksメカニズムをトリガーしない場合や、ShutdownGracePeriodやShutdownGracePeriodCriticalPodsが適切に設定されていないといったユーザーによるミス等が原因で、ノードがシャットダウンしたことをkubeletのNode Shutdownマネージャーが検知できないことがあります。詳細は上記セクション[ノードの正常終了](#graceful-node-shutdown)を参照ください。
302+
303+
ノードのシャットダウンがkubeletのNode Shutdownマネージャーに検知されない場合、StatefulSetを構成するPodはシャットダウン状態のノード上でterminating状態のままになってしまい、他の実行中のノードに移動することができなくなってしまいます。これは、ノードがシャットダウンしているため、その上のkubeletがPodを削除できず、それにより、StatefulSetが新しいPodを同じ名前で作成できなくなってしまうためです。Podがボリュームを使用している場合、VolumeAttachmentsはシャットダウン状態のノードによって削除されないため、Podが使用しているボリュームは他の実行中のノードにアタッチすることができなくなってしまいます。その結果として、StatefulSet上で実行中のアプリケーションは適切に機能しなくなってしまいます。シャットダウンしていたノードが復旧した場合、そのノード上のPodはkubeletに削除され、他の実行中のノード上に作成されます。また、シャットダウン状態のノードが復旧できなかった場合は、そのノード上のPodは永久にterminating状態のままとなります。
304+
305+
上記の状況を脱却するには、ユーザーが手動で`NoExecute`または`NoSchedule` effectを設定して`node.kubernetes.io/out-of-service` taintをノードに付与することで、故障中の状態に設定することができます。`kube-controller-manager` において `NodeOutOfServiceVolumeDetach`[フィーチャーゲート](/ja/docs/reference/command-line-tools-reference/feature-gates/)が有効になっており、かつノードがtaintによって故障中としてマークされている場合は、ノードに一致するtolerationがないPodは強制的に削除され、ノード上のterminating状態のPodに対するボリュームデタッチ操作が直ちに実行されます。これにより、故障中のノード上のPodを異なるノード上にすばやく復旧させることが可能になります。
306+
307+
non-graceful shutdownの間に、Podは以下の2段階で終了します:
308+
309+
1. 一致する`out-of-service` tolerationを持たないPodを強制的に削除する。
310+
2. 上記のPodに対して即座にボリュームデタッチ操作を行う。
311+
312+
{{< note >}}
313+
- `node.kubernetes.io/out-of-service` taintを付与する前に、ノードがシャットダウンしているか電源がオフになっていることを確認してください(再起動中ではないこと)。
314+
- Podの別ノードへの移動後、シャットダウンしていたノードが回復した場合は、ユーザーが手動で付与したout-of-service taintをユーザー自ら手動で削除する必要があります。
315+
{{< /note >}}
316+
297317
## スワップメモリの管理 {#swap-memory}
298318

299319
{{< feature-state state="alpha" for_k8s_version="v1.22" >}}

0 commit comments

Comments
 (0)