第11章 vSphere で稼働するノードでのハードウェアの更新

vSphere で実行されているノードが OpenShift Container Platform でサポート対象のハードウェアバージョンで実行されていることを確認する必要があります。現時点で、ハードウェアバージョン 13 以降は、クラスター内の vSphere 仮想マシンでサポートされます。

仮想ハードウェアを直ちに更新したり、vCenter で更新をスケジュールしたりできます。

重要

vSphere で実行しているクラスターノード用にハードウェアバージョン 13 を使用することは非推奨となりました。これらのバージョンは引き続き完全にサポートされていますが、サポートは OpenShift Container Platform の今後のバージョンで削除されます。ハードウェアバージョン 15 が、OpenShift Container Platform の vSphere 仮想マシンのデフォルトになりました。

11.1. vSphere での仮想ハードウェアの更新

VMware vSphere 上の仮想マシンのハードウェアを更新するには、仮想マシンを個別に更新し、クラスターのダウンタイムのリスクを軽減します。

11.1.1. vSphere でのコントロールプレーンノードの仮想ハードウェアの更新

ダウンタイムのリスクを軽減するには、コントロールプレーンノードを順次更新することが推奨されます。これにより、Kubernetes API が利用可能な状態を保ち、etcd はクォーラム (定足数) を維持します。

前提条件

  • OpenShift Container Platform クラスターをホストする vCenter インスタンスで必要なパーミッションを実行するためのクラスター管理者パーミッションがある。
  • vSphere ESXi ホストがバージョン 6.7U3 以降を使用している。

手順

  1. クラスターのコントロールプレーンノードを一覧表示します。

    $ oc get nodes -l node-role.kubernetes.io/master

    出力例

    NAME                    STATUS   ROLES    AGE   VERSION
    control-plane-node-0    Ready    master   75m   v1.22.1
    control-plane-node-1    Ready    master   75m   v1.22.1
    control-plane-node-2    Ready    master   75m   v1.22.1

    コントロールプレーンノードの名前を書き留めておきます。

  2. コントロールプレーンノードにスケジュール対象外 (unschedulable) のマークを付けます。

    $ oc adm cordon <control_plane_node>
  3. コントロールプレーンノードに関連付けられた仮想マシンをシャットダウンします。仮想マシンを右クリックし、PowerShut Down Guest OS を選択して、vSphere クライアントでこれを実行します。安全にシャットダウンされない場合があるため、Power Off を使用して仮想マシンをシャットダウンしないでください。
  4. vSphere クライアントで VM を更新します。詳細は、VMware ドキュメントの Upgrading a virtual machine to the latest hardware version を参照してください。
  5. コントロールプレーンノードに関連付けられた仮想マシンの電源を入れます。仮想マシンを右クリックし、Power On を選択して、vSphere クライアントでこれを実行します。
  6. ノードが Ready として報告されるまで待機します。

    $ oc wait --for=condition=Ready node/<control_plane_node>
  7. コントロールプレーンノードを再度スケジュール対象としてマークします。

    $ oc adm uncordon <control_plane_node>
  8. クラスター内のコントロールプレーンノードごとに、この手順を繰り返します。

11.1.2. vSphere でのコンピュートノードの仮想ハードウェア更新

ダウンタイムのリスクを軽減するには、コンピュートノードを順次更新することが推奨されます。

注記

ワークロードでは、NotReady の状態の複数のノードに対応できるという前提で、複数のコンピュートノードを並行して更新できます。管理者が責任を持って、必要なコンピュートノードを利用できる状態にしてください。

前提条件

  • OpenShift Container Platform クラスターをホストする vCenter インスタンスで必要なパーミッションを実行するためのクラスター管理者パーミッションがある。
  • vSphere ESXi ホストがバージョン 6.7U3 以降を使用している。

手順

  1. クラスターのコンピュートノードを一覧表示します。

    $ oc get nodes -l node-role.kubernetes.io/worker

    出力例

    NAME              STATUS   ROLES    AGE   VERSION
    compute-node-0    Ready    worker   30m   v1.22.1
    compute-node-1    Ready    worker   30m   v1.22.1
    compute-node-2    Ready    worker   30m   v1.22.1

    コンピュートノードの名前を書き留めておきます。

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

    $ oc adm cordon <compute_node>
  3. コンピュートノードから Pod を退避します。これにはいくつかの方法があります。たとえば、ノードですべてまたは選択した Pod を退避できます。

    $ oc adm drain <compute_node> [--pod-selector=<pod_selector>]

    ノードから Pod を退避させる方法は、ノードの Pod を退避する方法のセクションを参照してください。

  4. コンピュートノードに関連付けられた仮想マシンをシャットダウンします。仮想マシンを右クリックし、PowerShut Down Guest OS を選択して、vSphere クライアントでこれを実行します。安全にシャットダウンされない場合があるため、Power Off を使用して仮想マシンをシャットダウンしないでください。
  5. vSphere クライアントで VM を更新します。詳細は、VMware ドキュメントの Upgrading a virtual machine to the latest hardware version を参照してください。
  6. コンピュートノードに関連付けられた仮想マシンの電源を入れます。仮想マシンを右クリックし、Power On を選択して、vSphere クライアントでこれを実行します。
  7. ノードが Ready として報告されるまで待機します。

    $ oc wait --for=condition=Ready node/<compute_node>
  8. コンピュートノードを再度スケジュール対象としてマークします。

    $ oc adm uncordon <compute_node>
  9. クラスター内のコンピュートノードごとに、この手順を繰り返します。

11.1.3. vSphere 上のテンプレートの仮想ハードウェアの更新

前提条件

  • OpenShift Container Platform クラスターをホストする vCenter インスタンスで必要なパーミッションを実行するためのクラスター管理者パーミッションがある。
  • vSphere ESXi ホストがバージョン 6.7U3 以降を使用している。

手順

  1. RHCOS テンプレートが vSphere テンプレートとして設定されている場合は、次のステップの前に、VMware ドキュメント のテンプレートを仮想マシンに変換するに 従ってください。
注記

テンプレートから変換したら、仮想マシンをパワーオンしないでください。

  1. vSphere クライアントで VM を更新します。詳細は、VMware ドキュメントの Upgrading a virtual machine to the latest hardware version を参照してください。
  2. vSphere クライアントの VM を VM からテンプレートに変換します。詳細については、VMware ドキュメント の vSphere Client で仮想マシンをテンプレートに変換するに 従ってください。