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