9.2. 自動ボリューム切断のためにサービス外テイントを手動で追加する
前提条件
- クラスター管理者権限でクラスターにアクセスできる。
手順
非正常なノードのシャットダウン後にボリュームがノードから自動的に切り離されるようにするには、次の手順を実行します。
- ノードが異常であると検出されたら、ワーカーノードをシャットダウンします。
次のコマンドを実行してステータスを確認し、ノードがシャットダウンされていることを確認します。
oc get node <node name> 1
- 1
- <node name> = 正常にシャットダウンされていないノードの名前
重要ノードが完全にシャットダウンされていない場合は、ノードのテイントを続行しないでください。ノードがまだ稼働していてテイントが適用されると、ファイルシステムの破損が発生する可能性があります。
次のコマンドを実行して、対応するノードオブジェクトをテイントします。
重要この方法でノードにテイントを付けると、そのノード上のすべての Pod が削除されます。また、これにより、statefulset によってサポートされるすべての Pod が削除され、交換 Pod が別のノードに作成されます。
oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute 1
- 1
- <node name> = 正常にシャットダウンされていないノードの名前
テイントが適用されると、ボリュームはシャットダウンノードから切り離され、ディスクを別のノードに接続できるようになります。
例
結果の YAML ファイルは次のようになります。
spec: taints: - effect: NoExecute key: node.kubernetes.io/out-of-service value: nodeshutdown
- ノードを再起動します。
次のコマンドを実行して、対応するノードオブジェクトからテイントを削除します。
oc adm taint node <node name> node.kubernetes.io/out-of-service=nodeshutdown:NoExecute- 1