Menu Close

5.6.4. ノードを正常に再起動する

ノードを再起動する前に、ノードでのデータ損失を回避するために、etcdデータをバックアップすることをお勧めします。

手順

ノードの正常な再起動を実行するには:

  1. ノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <node1>
  2. ノードをドレインして、実行中のすべてのポッドを削除します。

    $ oc adm drain <node1> --ignore-daemonsets --delete-emptydir-data

    カスタム Pod の Disruption Budget(停止状態の予算)に関連付けられた 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
  3. デバッグモードでノードにアクセスします。

    $ oc debug node/<node1>
  4. ルートディレクトリーをホストに切り替えます。

    $ chroot /host
  5. ノードを再起動します。

    $ systemctl reboot

    すぐに、ノードはNotReady状態になります。

  6. 再起動が完了したら、以下のコマンドを実行してノードにスケジュール対象としてマークします。

    $ oc adm uncordon <node1>
  7. ノードの準備ができていることを確認します。

    $ oc get node <node1>

    出力例

    NAME    STATUS  ROLES    AGE     VERSION
    <node1> Ready   worker   6d22h   v1.18.3+b0068a8

関連情報

etcd データのバックアップの詳細については、Backing up etcd data を参照してください。