5.6.4. ノードを正常に再起動する
ノードを再起動する前に、ノードでのデータ損失を回避するために、etcd データをバックアップすることをお勧めします。
手順
ノードの正常な再起動を実行するには:
ノードにスケジュール対象外 (unschedulable) のマークを付けます。
$ oc adm cordon <node1>
ノードをドレインして、実行中のすべての Pod を削除します。
$ oc adm drain <node1> --ignore-daemonsets --delete-local-data
カスタムの Pod の Disruption Budget (停止状態の予算、PDB) 関連付けられた Pod を退避できないというエラーが発生することがあります。
エラーの例
error when evicting pods/"rails-postgresql-example-1-72v2w" -n "rails" (will retry after 5s): Cannot evict pod as it would violate the pod's disruption budget.
この場合、drain コマンドを再度実行し、
disable-eviction
フラグを追加し、PDB チェックを省略します。$ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data --force --disable-eviction
デバッグモードでノードにアクセスします。
$ oc debug node/<node1>
ルートディレクトリーをホストに切り替えます。
$ chroot /host
ノードを再起動します。
$ systemctl reboot
すぐに、ノードは
NotReady
状態になります。再起動が完了したら、以下のコマンドを実行して、ノードをスケジューリング可能な状態にします。
$ oc adm uncordon <node1>
ノードの準備ができていることを確認します。
$ oc get node <node1>
出力例
NAME STATUS ROLES AGE VERSION <node1> Ready worker 6d22h v1.18.3+b0068a8
関連情報
etcd データのバックアップの詳細については、Backing up etcd data を参照してください。