6.7.4. ノードをグレースフルに再起動する


データ損失やサービスの中断なしに、すべてのワークロードを他のノードに移動させる、ノードの正常な再起動を実行できます。

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

注記

シングルノード OpenShift クラスターの場合、クラスターを管理するために kubeconfig ファイルに証明書を含めるのではなく、ユーザーが oc login コマンドを実行する必要があります。そのため、ノードをスケジューリング対象から除外して drain (Pod の退避) を実行した後、oc adm コマンドが使用できなくなる可能性があります。これは、スケジューリング対象から除外する操作が原因で、openshift-oauth-apiserver Pod が実行されなくなるためです。以下の手順で示したように、SSH を使用してノードにアクセスできます。

シングルノード OpenShift クラスターでは、スケジューリング対象からの除外時および drain (Pod の退避) の実行時に Pod を再スケジューリングすることはできません。しかし、そうすることで、Pod、特にワークロード Pod が適切に停止し、関連するリソースを解放する時間を得ることができます。

以下の手順は、ノードを正常に再起動する方法を示しています。

手順

  1. ノードをスケジュール対象外としてマークします。

    $ oc adm cordon <node1>
  2. ノードの drain (Pod の退避) を実行して、実行中のすべての Pod を削除します。

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

    カスタムの 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
  3. デバッグモードでノードにアクセスします。

    $ oc debug node/<node1>
  4. ルートディレクトリーを /host に変更します。

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

    $ systemctl reboot

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

    注記

    一部のシングルノード OpenShift クラスターでは、openshift-oauth-apiserver Pod が実行されていないため、ノードの cordon (スケジューリング対象からの除外) の実行および drain (Pod の退避) の実行後に oc コマンドが使用できない場合があります。SSH でノードに接続し、リブートを実行することができます。

    $ ssh core@<master-node>.<cluster_name>.<base_domain>
    $ sudo systemctl reboot
  6. 再起動が完了したら、以下のコマンドを実行して、ノードをスケジュール対象としてマークします。

    $ oc adm uncordon <node1>
    注記

    一部のシングルノード OpenShift クラスターでは、openshift-oauth-apiserver Pod が実行されていないため、ノードの cordon (スケジューリング対象からの除外) の実行および drain (Pod の退避) の実行後に oc コマンドが使用できない場合があります。SSH を使用してノードに接続し、ノードの cordon (スケジューリング対象からの除外) の実行を解除します。

    $ ssh core@<target_node>
    $ sudo oc adm uncordon <node> --kubeconfig /etc/kubernetes/static-pod-resources/kube-apiserver-certs/secrets/node-kubeconfigs/localhost.kubeconfig
  7. ノードの準備ができていることを確認します。

    $ oc get node <node1>

    出力例

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

Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る