クラスター、ワーカー・ノード、クラスター・コンポーネントの更新

マスターノード、ワーカーノード、およびクラスタコンポーネントを正しい順序で更新することで、クラスタのセキュリティを確保し、サポートを受けられるようにしてください。 順序通りに更新を行わないと、バージョンの不整合による障害や予期せぬダウンタイムが発生する可能性があります。

以下の順序で更新を完了してください:

  1. クラスタのマスターを更新します。
  2. ワーカーノードを更新してください — クラシック、 VPC、または Satellite — インフラストラクチャの種類に応じて選択してください。 お手持ちのタイプがわからない場合は? IBM Cloud コンソールで、クラスターをクリックし、「概要」タブの 「インフラストラクチャ 」フィールドを確認してください。そこには 「Classic 」、 「VPC 」、または Satellite 」と表示されます。
  3. クラスタコンポーネントの更新 Fluentd やIngress ALBなど、手動で管理している場合。
  4. 管理対象アドオンを更新します。

マスターの更新

マスターをいつ更新すべきか、どうすればわかりますか?
更新が使用可能になると、コンソール、発表、および CLI で通知されます。 サポートされるバージョンのページ を定期的に確認することもできます。
マスターは最新バージョンから最大で何バージョン遅れていてもよいのでしょうか?
APIサーバーは、現在のバージョンより1つ先のバージョンにのみ更新できます(n+1 )。
ワーカーノードは、マスターよりも新しいバージョンを実行できますか?
ワーカー・ノードは、マスターより新しいバージョンの major.minor Kubernetes を実行できません。 また、ワーカーノードのバージョンは、マスターバージョンより1マイナーバージョンだけ古いものに限られます(n-1 )。まず、 マスターを更新してください を実行して、 Kubernetes の最新バージョンに更新してください。 その後に、クラスター内の ワーカー・ノードを更新してください。

ワーカー・ノードは、セキュリティー更新プログラム用のワーカー・ノードに固有のパッチ・バージョンなど、マスターより新しいパッチ・バージョンを実行できます。

パッチの更新はどのように適用されるのですか?
デフォルトでは、マスターのパッチ更新は数日にわたって自動的に適用されます。そのため、まだマスターに適用されていないパッチ・バージョンが、使用可能なバージョンとして表示されることがあります。 また、更新の自動化では、正常な状態でないクラスターや現在進行中の操作があるクラスターはスキップされます。 必要に応じて、IBM は特定のマスターのフィックスパック (マスターが 1 つ前のマイナー・バージョンから更新される場合にのみ必要なパッチなど) に対して、自動更新を無効にする場合があります。 いずれの場合も、 Red Hat OpenShift on IBM Cloud のバージョン情報を 確認して影響の有無を判断し、更新の自動適用を待たずに、ご自身で ibmcloud oc cluster master update コマンドを 安全に実行することも可能です。

マスターとは異なり、ワーカーはパッチ・バージョンごとに更新する必要があります。

マスターの更新中はどのような処理が行われるのでしょうか?
マスターは、レプリカ・マスター・ポッドが 3 つあるので高可用性です。 使用不可のマスター・ポッドが一度に 1 つだけになるようにローリング更新が行われます。 2 つのインスタンスが稼働しているので、更新中もクラスターにアクセスして変更することができます。 ワーカー・ノード、アプリ、リソースは実行され続けます。
このアップデートを元に戻すことはできますか?
いいえ、更新プロセスの実行後にクラスターを前のバージョンにロールバックすることはできません。 必ず、テスト・クラスターを使用し、手順に従って潜在する問題に対処してから、実動マスターを更新してください。
マスターを更新するには、どのような手順を踏めばよいですか?
以下の図は、マスターを更新するときに行えるプロセスを示しています。

マスター更新プロセス図
Kubernetes マスター更新プロセス図

クラスター・マスターを更新するための手順

作業を始める前に、 オペレーター または「 管理者 」IAMプラットフォームのアクセスロール がインストールされていることを確認してください。 ご自身のアクセス権限がわからない場合は、 IBM Cloud コンソールで [ 管理] → [アクセス (IAM)] → [ユーザー ] に移動するか、 アカウント管理者に問い合わせてください。

認証局(CA)の証明書ローテーションが進行中の場合、ローテーションが完了するまでマスターの更新はブロックされます。 作業を開始する前に、進行中のローテーションの状況を確認してください。

Red Hat OpenShift マスター メジャー バージョンまたは マイナー バージョンを更新するには、以下のようにします。

  1. Red Hat OpenShift on IBM Cloud バージョン情報 を確認し、 _「マスターの前に更新」_のマークが付いた更新を行います。

  2. Kubernetes の有用な警告 (非推奨の通知など)を確認してください。

  3. クラスターのバージョンを更新することによって発生する可能性のある影響については、クラスターにインストールされているアドオンおよびプラグインを確認してください。

    • アドオンの確認

      1. クラスター内のアドオンをリストします。
        ibmcloud oc cluster addon ls --cluster CLUSTER
        
      2. インストールされているアドオンごとに、サポートされている Red Hat OpenShift バージョンを確認してください。
        ibmcloud oc addon-versions
        
      3. クラスターの更新後の Red Hat OpenShift バージョンで実行するようにアドオンを更新する必要がある場合は、アドオンの更新を行います。
    • プラグインの検査

      1. 「 Helm 」カタログで、クラスタにインストールしたプラグインを探してください。
      2. サイド・メニューから、ソース & TAR ファイル セクションを展開します。
      3. ソース・コードをダウンロードして開きます。
      4. サポートされるバージョンについては、README.md または RELEASENOTES.md ファイルを確認します。
      5. クラスターの更新後の Red Hat OpenShift バージョンで実行するようにプラグインを更新する必要がある場合は、プラグインの説明に従ってプラグインを更新します。
  4. IBM Cloud コンソールを使用するか CLI ibmcloud oc cluster master update コマンドを実行して、API サーバーと、関連するマスター・コンポーネントを更新します。

  5. 数分待ってから、更新が完了したことを確認します。 IBM Cloud クラスター・ダッシュボードで API サーバーのバージョンを確認するか、ibmcloud oc cluster ls を実行します。

  6. マスターで実行されている API サーバーと同じバージョンの oc cli をインストールします。 Kubernetes サーバー版と2バージョン以上(n ± 2)の差がある oc クライアント版はサポートされていません。 ローカルの設定を更新するには、 ibmcloud oc cluster config -c CLUSTER_NAME_OR_ID を実行し、その後 oc version --client で確認してください。

マスターの更新が完了したら、ワーカーノードを更新してください。 この方法は、ご利用のインフラストラクチャの種類によって異なります:

  1. 従来のワーカーノードの更新 — 「 ConfigMap 」と「 worker update 」コマンドによって制御されるローリング更新を使用します。
  2. VPC ワーカーノードの更新 — VPC ベアメタルワーカーは、 worker reload を使用してその場で更新されます。VPC VSI ワーカーは、 worker replace --update を使用する必要があります。 ConfigMap のローリングアップデート手順は、VPCワーカーノードではまだサポートされていません。

クラシック・ワーカー・ノードの更新

クラシック・インフラストラクチャーワーカーノードは、その場でローリングアップデートを実行します。 更新処理は、 Kubernetes ( ConfigMap )によって制御されており、これにより、同時に利用不能になってよいノードの数が定義されます。 ibmcloud oc worker update コマンドは、クラシック・ワーカーノードでのみサポートされています。

更新には2つの種類があります:

  • パッチ :セキュリティ修正を適用し、最新のパッチバージョンに更新します。 ibmcloud oc worker reload または ibmcloud oc worker update をご利用ください。 どちらのコマンドも、ノードを最新のパッチバージョンに更新します。 update コマンドを実行すると、利用可能な major.minor のバージョン更新も同時に適用され、マスターと同一の状態に更新されます。
  • Major.minor: ワーカーノードの Kubernetes のバージョンを、マスターに合わせてアップグレードします。 ワーカーノードは、マスターより最大1バージョン遅れている必要があります(n-1 )。 ibmcloud oc worker update コマンドを使用してください。

詳しくは、更新タイプを参照してください。

証明書のローテーションの最も長いステップには、ワーカーノードの再ロードまたは交換が含まれるため、ワーカーノードを更新するたびに CA証明書をローテーションする ことは良い習慣です。

アップデート中は、私のアプリはどうなるのですか?
更新されたワーカーノード上で実行されているアプリは、クラスタ内の他のワーカーノード(異なるワーカープール内のノードやスタンドアロンのワーカーノードを含む)に再スケジューリングされます。 ダウンタイムを防ぐため、更新を開始する前に、クラスタにワークロードを処理するのに十分な処理能力があることを確認してください。
更新やリロードの際に、一度に停止するワーカーノードの数をどのように制御すればよいでしょうか?
Kubernetes ( ConfigMap )を使用して、同時に利用不能になる可能性のあるワーカーノードの最大数を設定します。 ワーカーノードは、それぞれのラベルによって識別されます。 IBM が提供するラベルや、カスタムラベルを使用できます。 すべてのワーカーノードを稼働状態に保つ必要がある場合は、アップデート前に ワーカープールの規模を変更するか、 スタンドアロンのワーカーノードを追加して 一時的な処理能力を確保することを検討してください。

ConfigMap は、更新の動作のみを制御します。 これは、リクエストがあると直ちに実行されるワーカーノードの再読み込みには影響しません。

もしコンフィグマップを定義しないことにした場合、どうなるのでしょうか?
デフォルトでは、更新中に各クラスタの全ワーカーノードのうち、最大20%が利用不能になる可能性があります。 この値は、 defaultcheck.json エントリを含む ConfigMap を定義することで上書きできます。

前提条件

クラシック・インフラストラクチャーワーカーノードを更新する前に、以下の前提条件となる手順を完了してください。

ワーカーノードの更新時には、ワーカーノードのマシンに新しいイメージが適用され、 永続ストレージに保存 されていないすべてのデータは完全に削除されます。 作業を開始する前に、保存が必要なデータがすべてワーカーノードの外に保存されていることを確認してください。

クラスタに Portworx がインストールされている場合は、 ワーカーノードを更新する前に、 Portworx の設定を更新 する必要があります。

アップデート前の準備作業(順に実行してください)

  1. 最新のセキュリティパッチおよび必要な変更内容については、「 Red Hat OpenShift on IBM Cloud 」のバージョン情報 をご確認ください。
  2. 『 Red Hat OpenShift 』のバージョン準備ガイドで、「 マスター適用前 」または 「マスター適用後」 と記載されている変更をすべて行ってください。
  3. ワーカーノードを更新する前に、 マスターを更新してください。 ワーカーノードのバージョンは、マスターで実行されているAPIサーバーのバージョンよりも高くてはなりません。
  4. Red Hat OpenShift クラスターにアクセスします。
  5. 更新作業中のワークロードの再スケジューリングに備え、クラスターに ワーカーノードを追加することを 検討してください。 更新が完了したら、余分なノードを削除することができます。

必要な権限

オペレーター または、 管理者 IAMプラットフォームのアクセスロール がインストールされていることを確認してください。 ご自身のアクセス権限がわからない場合は、 IBM Cloud コンソールで [ 管理] → [アクセス (IAM)] → [ユーザー ] に移動するか、 アカウント管理者に問い合わせてください。

構成マップを使用した CLI でのクラシック・ワーカー・ノードの更新

ConfigMap を使用して、クラシック・ワーカーノードのローリングアップデートを実行します。 ConfigMap を使用すると、ゾーンまたはリージョンごとに、同時に利用不能になるノードの数を制御できます。 お使いのクラスタにおいて、デフォルトの「20%の可用性低下」ルールで問題がない場合は、手順3および4( ConfigMap の作成)をスキップし、手順5に直接進んで、デフォルトの動作を使用して更新を適用することができます。

  1. 前提条件手順を実行します。

  2. 使用可能なワーカー・ノードのリストを表示し、それらのプライベート IP アドレスをメモします。

    ibmcloud oc worker ls --cluster CLUSTER
    
  3. ワーカー・ノードのラベルを表示します。 ワーカー・ノード・ラベルは、CLI 出力の Labels セクションにあります。 ラベルはすべて NodeSelectorKey と NodeSelectorValue で構成されます。

    oc describe node PRIVATE-WORKER-IP
    

    出力例

    NAME:               10.184.58.3
    Roles:              <none>
    Labels:             arch=amd64
                    beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/os=linux
                    failure-domain.beta.kubernetes.io/region=us-south
                    failure-domain.beta.kubernetes.io/zone=dal12
                    ibm-cloud.kubernetes.io/encrypted-docker-data=true
                    ibm-cloud.kubernetes.io/iaas-provider=softlayer
                    ibm-cloud.kubernetes.io/machine-type=u3c.2x4.encrypted
                    kubernetes.io/hostname=10.123.45.3
                    privateVLAN=2299001
                    publicVLAN=2299012
    Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
    CreationTimestamp:  Tue, 03 Apr 2022 15:26:17 -0400
    Taints:             <none>
    Unschedulable:      false
    
  4. 構成マップを作成し、ワーカー・ノードの非可用性ルールを定義します。 ConfigMap は、最大15個の名前付きチェックをサポートしています。 各チェックでは、ラベルに基づいて一連のワーカーノードを対象とし、それらのノードのうち、同時に利用不能となってもよい最大割合を設定します。 以下の例では、ゾーンチェック(zonecheck.json )、リージョンチェック(regioncheck.json )、デフォルトのフォールバックチェック(defaultcheck.json )、およびカスタムチェック用のテンプレートを示しています。 各チェックを行う際は、前の手順で取得したワーカーノードのラベルから1つを選択し、対象となるノードを特定してください。

    どのチェックでも、NodeSelectorKey と NodeSelectorValue に値を 1 つだけ設定できます。 複数のリージョン、ゾーン、またはその他のワーク・ノード・ラベルに対するルールを設定する場合は、新しいチェックを作成します。 1つのConfigMap内で、最大15個のチェックを定義できます。 さらにチェックを追加すると、要求されたすべてのワーカーが更新されるまで、一度に 1 つのワーカー・ノードのみが再ロードされます。

    例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: ibm-cluster-update-configuration
      namespace: kube-system
    data:
      drain_timeout_seconds: "120"
      zonecheck.json: |
        {
          "MaxUnavailablePercentage": 30,
          "NodeSelectorKey": "failure-domain.beta.kubernetes.io/zone",
          "NodeSelectorValue": "dal13"
        }
      regioncheck.json: |
        {
          "MaxUnavailablePercentage": 20,
          "NodeSelectorKey": "failure-domain.beta.kubernetes.io/region",
          "NodeSelectorValue": "us-south"
        }
      defaultcheck.json: |
        {
          "MaxUnavailablePercentage": 20
        }
      <check_name>: |
        {
          "MaxUnavailablePercentage": <value_in_percentage>,
          "NodeSelectorKey": "<node_selector_key>",
          "NodeSelectorValue": "<node_selector_value>"
        }
    
    drain_timeout_seconds
    オプション: ドレインが完了するまで待つタイムアウト時間(秒単位)。 ワーカー・ノードの排出を行うと、そのワーカー・ノードから既存のポッドがすべて安全に削除され、クラスター内のその他のワーカー・ノード上にスケジュール変更されます。 指定可能な値は、1 から 180 の範囲の整数です。 デフォルト値は 30 です。
    zonecheck.json および regioncheck.json
    指定された NodeSelectorKey および NodeSelectorValue で識別できる一連のワーカー・ノードのルールを定義する 2 つのチェック。 zonecheck.json は、ワーカー・ノードをゾーン・ラベルに基づいて識別します。regioncheck.json は、プロビジョニング時にすべてのワーカー・ノードに追加されたリージョン・ラベルを使用します。 この例では、ゾーン・ラベルとして dal13 を持つすべてのワーカー・ノードの 30% と、us-south 内のすべてのワーカー・ノードの 20% を更新中に使用不可にすることができます。
    defaultcheck.json
    構成マップを作成しない場合、またはマップが正しく構成されていない場合は、Kubernetes のデフォルトが適用されます。 デフォルトでは、同時に使用不可にできるのは、クラスターのワーカー・ノードの 20% のみです。 デフォルトのチェックを構成マップに追加して、このデフォルト値をオーバーライドできます。 この例では、ゾーンとリージョンのチェック (dal13 または us-south) で指定されていないすべてのワーカー・ノードを更新中に使用できない可能性があります。
    MaxUnavailablePercentage
    指定したラベルのキーと値について使用不可にできるノードの最大数 (パーセンテージで指定)。 ワーカー・ノードが使用不可になるのは、デプロイ、再ロード、またはプロビジョニングのプロセス中です。 定義した使用不可ノードの最大パーセンテージを超える場合、待機中のワーカー・ノードの更新はブロックされます。
    NodeSelectorKey
    ルールを設定するワーカー・ノードのラベル・キー。 IBM 提供のデフォルト・ラベルと、自分で作成したワーカー・ノード・ラベルにルールを設定できます。 1 つのワーカー・プールに属するワーカー・ノードのルールを追加する場合は、ibm-cloud.kubernetes.io/machine-type ラベルを使用できます。
    NodeSelectorValue
    定義したルールの対象になるワーカー・ノードのラベル値。
  5. クラスター内に構成マップを作成します。

    oc apply -f <filepath/configmap.yaml>
    
  6. 構成マップが作成されたことを確認します。

    oc get configmap --namespace kube-system
    
  7. ワーカー・ノードを更新します。

    ibmcloud oc worker update --cluster CLUSTER --worker WORKER-NODE-1-ID --worker WORKER-NODE-2-ID
    
  8. オプション: 構成マップによってトリガーされたイベントと、発生した検証エラーを確認します。 これらのイベントは、CLI 出力内の Events セクションで確認できます。

    oc describe -n kube-system cm ibm-cluster-update-configuration
    
  9. ワーカー・ノードの Kubernetes バージョンを確認して、更新が完了したことを確認します。

    oc get nodes
    
  10. ワーカー・ノードが重複していないことを確認します。 場合によっては、古いクラスタでは、更新後の NotReady ステータスが付いた重複したワーカーノードがリストされることがあります。 重複を削除するには、トラブルシューティングを参照してください。

次のステップ

  1. 他のワーカー・プールで更新処理を繰り返します。

  2. クラスタで作業しているすべての開発者に、 Kubernetes のマスターバージョンに合わせるため、 oc のCLIを更新する へ通知してください。 サーバー版と2バージョン以上異なるバージョンの oc クライアントを実行することはサポートされておらず、予期しないエラーが発生する可能性があります。

  3. Kubernetes ダッシュボードに使用状況グラフが表示されない場合は、kube-dashboard ポッドを削除します。

コンソールでのクラシック・ワーカー・ノードの更新

ConfigMap を初めてセットアップした後、 IBM Cloud コンソールを使用してワーカーノードを更新できます。 コンソールは、 ConfigMap で定義した利用不可ルールを順守します。

  1. 前提条件の手順を 完了し、ワーカーノードの更新方法を制御するために ConfigMap を設定してください。
  2. IBM Cloud から メニューアイコン をクリックし、 コンテナ > クラスター の順にクリックします。
  3. **「クラスター」**ページから、クラスターを選択します。
  4. **「ワーカー・ノード」**タブから、更新する各ワーカー・ノードのチェック・ボックスを選択します。 アクション・バーがテーブル・ヘッダー行の上に表示されます。
  5. アクション・バーで**「更新」**をクリックします。

クラスターに Portworx がインストールされている場合は、更新されたワーカーノード上の Portworx ポッドを再起動する必要があります。 詳しくは、Portworx の制限を参照してください。

VPC ワーカー・ノードの更新

VPC ワーカーノードの更新方法は、そのタイプやクラスタプラットフォームによって異なります。 ibmcloud oc worker update コマンドは、どのVPCワーカーノードでもサポートされていません。 いずれの場合も、まずクラスタマスターを更新する必要があります。

  • VPC ベアメタルワーカー : ibmcloud oc worker reload を使用してその場で更新されました。 そのノードはIPアドレスを維持します。
  • VPC 仮想サーバーインスタンス (VSI) ワーカー : ibmcloud oc worker replace --update (マスターバージョンに合わせるため)または ibmcloud oc worker replace (パッチの更新のみ)に置き換えられました。 古いノードが削除され、新しいノードがプロビジョニングされます。

更新には2つの種類があります:

  • パッチ :セキュリティ修正を適用し、現在のBOMバージョンの最新パッチに更新します。 VPCのベアメタル担当者は、 ibmcloud oc worker reload をご利用ください。 VPC VSIの従業員については、 ibmcloud oc worker replace をご利用ください。
  • Major.minor: ワーカーノードの Kubernetes のバージョンを、マスターに合わせてアップグレードします。 ワーカーノードのバージョンは、マスターより最大1バージョン遅れている必要があります(n-1 )。VPCベアメタルワーカーの場合は、 ibmcloud oc worker reload を使用してください。 VPC VSIの従業員については、 ibmcloud oc worker replace --update をご利用ください。

証明書のローテーションの最も長いステップには、ワーカーノードの再ロードまたは交換が含まれるため、ワーカーノードを更新するたびに CA証明書をローテーションする ことは良い習慣です。

OpenShift Data Foundation がクラスターにデプロイされている場合は、OpenShift Data Foundation を使用した VPC ワーカー・ノードの更新の手順に従ってください。

アップデート中は、私のアプリはどうなるのですか?
更新されたワーカーノード上で実行されていたアプリは、クラスター内の他のワーカーノードに再スケジューリングされます。 それらのワーカー・ノードは別のワーカー・プールのものである可能性があります。 ダウンタイムを防ぐため、更新を開始する前に、クラスタにワークロードを処理するのに十分な処理能力があることを確認してください。 詳しくは、 クラシック・クラスターへのワーカー・ノードの追加 または VPC クラスターへのワーカー・ノードの追加 を参照してください。
アップデート中は、私のワーカーノードはどうなりますか?
VPCベアメタルワーカーの場合、 worker reload を使用して、ワーカーノードがその場で再読み込みされます。 ノードはIPアドレスを維持します。ローカルディスク上のデータは削除されるため、ワーカーノードの外に保存する必要があります。 VPC仮想サーバーインスタンス(VSI)のワーカーについては、古いワーカーノードを削除し、更新されたパッチまたは major.minor のバージョンで動作する新しいワーカーノードをプロビジョニングすることで、ワーカーノードが置き換えられます。 後継のワーカー・ノードは、削除されるワーカー・ノードと同じゾーンで同じワーカー・プールに同じフレーバーを使用して作成されます。 ただし、後継のワーカー・ノードには新しいプライベート IP アドレスが割り当てられ、古いワーカー・ノードに適用されていたカスタムのラベルやテイントは失われます (ワーカー・プールのラベルおよびテイントは後継のワーカー・ノードにも適用されます)。
複数のワーカーノードを同時に交換した場合はどうなりますか?
複数のワーカー・ノードを同時に置換すると、それらのノードは 1 つずつではなく、同時に削除されて置換されます。 ワーカー・ノードを置換する前に、ワークロードのスケジュールを変更するための十分な容量がクラスター内にあることを確認してください。
代替ワーカーノードが作成されなかった場合はどうなりますか?
ワーカー・プールの自動リバランスが有効でない場合、後継のワーカー・ノードは作成されません。

前提条件

VPC インフラストラクチャのワーカーノードを更新する前に、以下の前提条件となる手順を完了してください。

VPC VSI ワーカーの場合、ワーカーノードが削除され、新しいノードに置き換えられます。 VPCのベアメタルワーカーの場合、ノードはその場で再読み込みされます。 いずれの場合も、 永続ストレージに保存 されていないデータは完全に削除されます。 作業を開始する前に、保存が必要なデータがすべてワーカーノードの外に保存されていることを確認してください。

クラスターに Portworx がデプロイされている場合は、このページの手順ではなく、 Portworx ボリュームを使用してVPCワーカーノードを更新する 手順に従ってください。

アップデート前の準備作業(順に実行してください)

  1. 最新のセキュリティパッチおよび必要な変更内容については、「 Red Hat OpenShift on IBM Cloud 」のバージョン情報 をご確認ください。
  2. 『 Red Hat OpenShift 』のバージョン準備ガイドで、「 マスター適用前 」または 「マスター適用後」 と記載されている変更をすべて行ってください。
  3. ワーカーノードを更新する前に、 マスターを更新してください。 ワーカーノードのバージョンは、マスターで実行されているAPIサーバーのバージョンよりも高くてはなりません。
  4. Red Hat OpenShift クラスターにアクセスします。

必要な権限

オペレーター または、 管理者 IAMプラットフォームのアクセスロール がインストールされていることを確認してください。 ご自身のアクセス権限がわからない場合は、 IBM Cloud コンソールで [ 管理] → [アクセス (IAM)] → [ユーザー ] に移動するか、 アカウント管理者に問い合わせてください。

CLI での VPC ワーカー・ノードの更新

CLI を使用してワーカーノードを更新するには、以下の手順を実行してください。

  1. 前提条件手順を実行します。
  2. オプション:ワーカープールのサイズを変更して、クラスタの処理能力を拡大します。 ワーカー・ノード上のポッドのスケジュールを変更し、追加したワーカー・ノードで更新中も実行を継続することができます。 詳しくは、 クラシック・クラスターへのワーカー・ノードの追加 または VPC クラスターへのワーカー・ノードの追加 を参照してください。
  3. クラスター内のワーカー・ノードをリストして、更新するワーカー・ノードの ID および Primary IP をメモします。
    ibmcloud oc worker ls --cluster CLUSTER
    
  4. ワーカーノードを更新します。 使用するコマンドは、ワーカーノードの種類によって異なります。

VPC ベアメタルワーカー : worker reload を使用して、ノードをその場で再イメージ化します。 ノードはIPアドレスを維持したまま、最新のパッチバージョンに更新されます。

```sh {: pre}
ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID
```
**VPC 仮想サーバーインスタンス(VSI)ワーカー** : `worker replace` コマンドを使用して、マスターバージョンに対応するパッチバージョンまたは `major.minor` バージョンのいずれかを更新します。

*  ワーカーノードをマスターと同じ `major.minor` のバージョンに更新するには、 `--update` オプションを指定してください。
```sh {: pre}
    ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID --update
    ```
*  `major.minor` のバージョンを同一に保ちつつ、ワーカーノードを最新のパッチバージョンに更新するには、 `--update` オプションを指定しないでください。
```sh {: pre}
    ibmcloud oc worker replace --cluster CLUSTER --worker WORKER-NODE-ID
    ```
  1. 更新する必要があるワーカー・ノードごとに、この手順を繰り返します。
  2. オプション:交換されたワーカーノードが「 Ready」 ステータスになったら、希望するクラスタ容量に合わせてワーカープールのサイズを変更してください。 詳しくは、 VPC クラスターへのワーカー・ノードの追加 を参照してください。

VPC クラスターで Portworx を実行している場合、manually attach your Block Storage for VPC ボリュームを新規のワーカー・ノードに手動で接続する必要があります。

VPCベアメタルワーカーの再起動中のファームウェア更新

VPCベアメタルワーカーノードを再起動すると、 IBM Cloud インフラストラクチャは、そのサーバーに対してファームウェアの更新が保留中かどうかを自動的に確認し、再起動プロセスの一環としてその更新を適用します。 ファームウェアの更新を開始するために、追加の手順は必要ありません。

VPCのベアメタルワーカーノードを再起動する際は、以下の点に留意してください:

リロード時間の延長
リロード中にファームウェアの更新が行われると、リロードにかかる合計時間が、通常のリロード所要時間よりも大幅に(30分以上)長くなる可能性があります。 それに応じて、メンテナンスの実施時期を計画してください。
今後予定されている更新内容について、事前に確認することはできません
reload コマンドを実行するまでは、ワーカーノードに対してファームウェアの更新が保留中であるかどうかを確認する方法はありません。
データ損失のリスク
すべてのVPCベアメタルワーカーの再読み込みと同様に、ファームウェアの更新が適用されるかどうかに関わらず、再読み込み中にローカルディスク上のデータは削除されます。 再読み込みを行う前に、永続ストレージに保存されていないデータはすべてバックアップしてください。
ファームウェアの更新によるリロードの失敗
場合によっては、ファームウェアの更新に失敗することがあり、その結果、ワーカーノードが「 reload_failed 」状態(Failed to reload worker )に入り、ステータスの詳細が「 The infrastructure firmware update has failed. (P4056) 」となることがあります。 次のような状況が発生した場合は:
  1. 数分待ってから、 ibmcloud oc worker reload --cluster CLUSTER --worker WORKER-NODE-ID を再度実行して、リロードをやり直してください。
  2. 2~3回試してもエラーが解消されない場合は、 IBM Cloud のサポートチケット を開いてください。

コンソールでの VPC ワーカー・ノードの更新

コンソールで VPC ワーカー・ノードを更新できます。 作業を開始する前に、アプリケーションのダウンタイムを防ぐために、クラスターに ワーカーノードを追加することを 検討してください。

「Update 」アクションの動作は、ワーカーノードの種類およびクラスタのプラットフォームによって異なります:

  • VPC ベアメタルワーカー :ノードはその場で再読み込みされます。 代替ノードはプロビジョニングされていません。
  • VPC 仮想サーバーインスタンス(VSI)ワーカー :ワーカーノードは、更新後のバージョンで新しいノードに置き換えられます。
  1. 前提条件手順を実行します。
  2. IBM Cloud から メニューアイコン をクリックし、 コンテナ > クラスター の順にクリックします。
  3. **「クラスター」**ページから、クラスターを選択します。
  4. **「ワーカー・ノード」**タブから、更新する各ワーカー・ノードのチェック・ボックスを選択します。 アクション・バーがテーブル・ヘッダー行の上に表示されます。
  5. アクション・バーで**「更新」**をクリックします。

フレーバー (マシン・タイプ) の更新

より多くのメモリ、追加のCPU、あるいはGPU搭載マシンなど、異なる計算リソースが必要になった場合は、ワーカーノードのフレーバー(マシンタイプ)を更新してください。 フレーバーを更新すると、新しいフレーバーを持つ新しいワーカープールが作成され、その後、古いワーカープールが削除されます。 この処理ではノードが置き換えられるため、永続ストレージに保存されていないワーカーノード上のデータはすべて完全に削除されます。

開始前に

フレーバーを更新するには

  1. 使用可能なワーカー・ノードのリストを表示し、それらのプライベート IP アドレスをメモします。

    1. クラスターで使用可能なワーカー・プールをリストします。
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    2. ワーカー・プール内のワーカー・ノードをリストします。 **ID** と**プライベート IP** をメモします。
    ```sh {: pre}
        ibmcloud oc worker ls --cluster CLUSTER --worker-pool WORKER-POOL
        ```
    3. ワーカー・ノードの詳細を取得します。 出力に表示されているゾーンをメモし、クラシック・クラスターのプライベート VLAN ID とパブリック VLAN ID、または VPC クラスターのサブネット ID をメモしてください。
    ```sh {: pre}
        ibmcloud oc worker get --cluster CLUSTER --worker WORKER-ID
        ```
    
  2. ゾーンで使用可能なフレーバーをリストします。

    ibmcloud oc flavors --zone <zone>
    
  3. 新しいマシン・タイプのワーカー・ノードを作成します。

    1. 置き換えるワーカー・ノードと同じ数のワーカー・ノードを含むワーカー・プールを作成します。
      • クラシック・クラスター:
        ibmcloud oc worker-pool create classic --name WORKER-POOL --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE
        
      • VPC 第 2 世代クラスター:
        ibmcloud oc worker-pool create vpc-gen2 --name NAME --cluster CLUSTER --flavor FLAVOR --size-per-zone NUMBER-OF-WORKERS-PER-ZONE --label LABEL
        
    2. ワーカー・プールが作成されたことを確認します。
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    3. 前の手順で取得したワーカー・プールにゾーンを追加します。 ゾーンを追加すると、ワーカー・プールに定義したワーカー・ノードがそのゾーンにプロビジョンされ、今後のワークロード・スケジュールの対象に含められます。 ワーカー・ノードを複数のゾーンに分散させる場合は、[クラシック用](/docs/openshift?topic=openshift-regions-and-zones#zones-mz)のマルチゾーン・ロケーションまたは [VPC 用](/docs/openshift?topic=openshift-regions-and-zones#zones-vpc)のマルチゾーン・ロケーションを選択します。
        * クラシック・クラスター:
            ```sh {: pre}
            ibmcloud oc zone add classic --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --private-vlan PRIVATE-VLAN-ID --public-vlan PUBLIC-VLAN-ID
            ```
        * VPC クラスター:
            ```sh {: pre}
            ibmcloud oc zone add vpc-gen2 --zone ZONE --cluster CLUSTER --worker-pool WORKER-POOL --subnet-id VPC-SUBNET-ID
            ```
    
  4. ワーカー・ノードがデプロイされるまで待ちます。 ワーカー・ノードの状態が**「正常」**に変わったら、デプロイメントは終了です。

    ibmcloud oc worker ls --cluster CLUSTER
    
  5. 古いワーカープールを削除します。 Classic ベアメタル・フレーバー(月額課金制)を解約する場合、たとえ月の途中で解約しても、その月の利用料金は全額請求されます。 VPCワーカー(ベアメタルを含む)は、時間単位で課金されます。

    1. 古いマシン・タイプのワーカー・プールを削除します。 ワーカー・プールを削除すると、そのプールのすべてのゾーンのすべてのワーカー・ノードが削除されます。 このプロセスは、完了まで数分かかることがあります。
        ibmcloud oc worker-pool rm --worker-pool WORKER-POOL --cluster CLUSTER
        ```
    2. ワーカー・プールが削除されたことを確認します。
    ```sh {: pre}
        ibmcloud oc worker-pool ls --cluster CLUSTER
        ```
    
  6. ワーカー・ノードがクラスターから削除されたことを確認します。

    ibmcloud oc worker ls --cluster CLUSTER
    
  7. 上記の手順を繰り返して、他のワーカー・プールまたはスタンドアロン・ワーカー・ノードを別のフレーバーに更新します。

ワーカー・プールはどのようにスケールダウンされますか?

このセクションでは、ワーカーノードの更新後や、 ibmcloud oc worker-pool resize を実行する場合など、スケールダウン中にワーカーノードが削除された際に使用される自動優先順位付けロジックについて この動作について設定を行う必要はありません。自動的に行われます。

ワーカープール内のワーカーノードの数が減少した場合、状態、健全性、バージョンなどのいくつかの属性に基づいて、削除するワーカーノードの優先順位が決定されます。

この優先順位ロジックは、自動スケーリング機能アドオンには関係ありません。

以下の表は、ワーカー・ノードが削除のために優先順位付けされる順序を示しています。

ibmcloud oc worker ls コマンドを実行すると、表にリストされているすべてのワーカー・ノード・プロパティーを表示できます。

ワーカー・プールのスケールダウン時に削除されるワーカー・ノードの優先度。
優先順位 プロパティー (Property) 説明
1 ワーカー・ノードの状態 機能していない状態または機能していない状態のワーカー・ノードは、削除のために優先順位付けされます。 このリストには、 provision_failed、 deploy_failed、 deleting、 provision_pending、 provisioning、 deploying、 provisioned、 reloading_failed、 reloading、 deployed の順に状態が表示されます。
2 作業ノードの健康状態 正常でないワーカー・ノードは、正常なワーカー・ノードより優先されます。 このリストには、 critical、 warning、 pending、 unsupported、 normal の順で、正常性の状態が表示されます。
3 ワーカー・ノードのバージョン 古いバージョンで実行されるワーカー・ノードは、削除の優先順位が高くなります。
4 選択された配置設定 専用ホストで実行されているワーカーの場合のみ。 DesiredPlacementDisabled オプションが true に設定されている専用ホスト上で実行されているワーカー・ノードは、削除の優先順位が高くなります。
5 アルファベット順 ワーカー・ノードは、上記の要因に基づいて優先順位付けされた後、アルファベット順に削除されます。 ワーカー・ノードの ID 規則に基づいて、クラシック・クラスターと VPC クラスターのワーカーの ID が年齢と相関するため、古いワーカー・ノードが最初に削除されることに注意してください。

クラスター・コンポーネントの更新

Red Hat OpenShift on IBM Cloud クラスターには Ingress などのコンポーネントが付属していて、クラスターのプロビジョン時に自動的にインストールされます。 デフォルトでは、これらのコンポーネントは IBM によって自動的に更新されます。 ただし、一部のコンポーネントは、自動更新を無効にして、マスター・ノードおよびワーカー・ノードとは別に手動で更新することができます。

クラスターとは別に、どのデフォルトコンポーネントを更新できますか?
必要に応じて、以下のコンポーネントの自動更新を無効にできます。
クラスタとは別に更新できないコンポーネントはありますか?
はい。 クラスターには、変更できない以下の管理対象コンポーネントおよび関連リソースとともにデプロイされます。ただし、特定のパフォーマンス上の利点を得るためにポッドをスケーリングしたり、構成マップを編集したりする場合は除きます。 これらのデプロイメント・コンポーネントはクラスター・マスターと一緒に更新されるので、コンポーネントのいずれかを変更しようとしても、元の設定が定期的に復元されます。 ただし、これらのコンポーネントに関連するユーザー作成のリソース (Calico デプロイメント・コンポーネントで実施するために作成した Calico ネットワーク・ポリシーなど) は更新されないことに注意してください。
  • calico コンポーネント
  • coredns コンポーネント
  • ibm-cloud-provider-ip
  • ibm-file-plugin
  • ibm-keepalived-watcher
  • ibm-master-proxy
  • ibm-storage-watcher
  • kubernetes-dashboard コンポーネント
  • metrics-server
  • olm-operator および catalog コンポーネント (1.16 以降)
  • vpn
デフォルトのコンポーネント以外のプラグインやアドオンをインストールしたり、追加したりすることはできますか?
はい。 Red Hat OpenShift on IBM Cloud には、クラスタに機能を追加するために選択できる、その他のプラグインやアドオンが用意されています。 たとえば、クラスタで IBM 管理アドオンを有効にしたい場合があります。 これらのアドオンは、 管理されたアドオンを更新 する手順に従って、個別に更新する必要があります。

Fluentd の自動更新の管理

クラスター内のソースに対して、外部サーバーに転送するためのロギング構成を作成すると、Fluentd コンポーネントがクラスター内に作成されます。 ロギング構成またはフィルター構成を変更するには、Fluentd コンポーネントが最新バージョンでなければなりません。 デフォルトでは、このコンポーネントに対する自動更新は有効になっています。

以下のコマンドを実行するには、そのクラスターに対して「 Administrator IBM Cloud 」というIAMプラットフォームアクセスロール を持っている必要があります。

Fluentd コンポーネントの自動更新は、以下の方法で管理できます。

  • ibmcloud oc logging autoupdate get --cluster CLUSTER コマンド を実行して、自動更新が有効になっているかどうかを確認します。
  • ibmcloud oc logging autoupdate disable コマンドを実行して、自動更新を無効にします。
  • 自動更新が無効になっている場合に、構成を変更する必要がある場合は、以下の 2 つのオプションがあります。
    • Fluentd ポッドの自動更新をオンにします。
        ibmcloud oc logging autoupdate enable --cluster CLUSTER
        ```
    * `--force-update` オプションを指定したロギング・コマンドを使用して、一回限りの更新を強制実行します。 ポッドは Fluentd コンポーネントの最新バージョンに更新されますが、今後 Fluentd は自動的に更新されなくなります。
            コマンド例
    
    ```sh {: pre}
        ibmcloud oc logging config update --cluster CLUSTER --id LOG-CONFIG-ID --type LOG-TYPE --force-update
        ```
    

Ingress ALB の自動更新の管理

Ingress アプリケーション・ロード・バランサー (ALB) コンポーネントを更新するタイミングを制御してください。 ALB を最新の状態に保つ方法については、Ingress ALB ライフサイクルの管理を参照してください。

マネージド・アドオンの更新

IBM Cloud Kubernetes Service のマネージドクラスター用アドオンを利用すれば、 Istio などのオープンソース機能を活用して、クラスターを簡単に強化することができます。 クラスターに追加するオープンソース・ツールのバージョンは、IBM によるテストを受け、IBM Cloud Kubernetes Service で使用することを承認されています。 クラスター内で有効にしたマネージド・アドオンを最新バージョンに更新するには、マネージド・アドオンの更新を参照してください。