第5章 ノードにイメージを固定する


イメージレジストリーへの接続が遅く、信頼性が低いと、クラスターの更新やアプリケーションのデプロイなど、イメージのプルを必要とする操作が妨げられる可能性があります。これには、帯域幅が低いクラスター、信頼できるインターネット接続がないクラスター、または非接続環境にあるクラスターが含まれる場合があります。たとえば、クラスターの更新では 100 を超えるイメージのプルが必要になる場合があります。これらのイメージをプルできないと再試行が発生し、更新プロセスが妨げられ、更新が失敗する可能性があります。

これを防ぐ 1 つの方法は、実際に必要になる前に必要なイメージを事前にプルし、それらのイメージを特定のマシン設定プール (MCP) に 固定 することです。これにより、必要なときにノードでイメージが利用できるようになります。固定されたイメージは、より一貫性のある更新を提供できます。これは、メンテナンスウィンドウに更新をスケジュールするときに重要です。

固定されたイメージにより、アプリケーションのデプロイ時にイメージが確実に使用可能になるため、より信頼性の高いデプロイが可能になります。

イメージを固定する で説明されているように、PinnedImageSet カスタムリソース (CR) を使用して、イメージを特定のノードに固定できます。固定されたイメージは、ノード上の /etc/crio/crio.conf.d/50-pinned-images ファイルに保存されます。ファイルの内容は次の例のようになります。

[crio]
  [crio.image]
    pinned_images = ["quay.io/openshift-release-dev/ocp-release@sha256:4198606580b69c8335ad7ae531c3a74e51aee25db5faaf368234e8c8dae5cbea", "quay.io/openshift-release-dev/ocp-release@sha256:513cf1028aa1a021fa73d0601427a0fbcf6d212b88aaf9d76d4e4841a061e44e", "quay.io/openshift-release-dev/ocp-release@sha256:61eae2d261e54d1b8a0e05f6b5326228b00468364563745eed88460af04f909b"]
Copy to Clipboard Toggle word wrap

固定されたイメージのもう 1 つの利点は、イメージのガベージコレクションによって固定されたイメージが削除されないことです。

イメージをプルする前に、Machine Config Operator (MCO) は、影響を受ける各ノードに十分なストレージスペースがあることを確認します。ノードに十分なスペースがある場合、MCO は固定されたイメージファイルを作成し、イメージをプルして、CRI-O をリロードします。十分なスペースがない場合、MCO はイメージをプルせず、エラーメッセージを表示します。

5.1. イメージを固定する

PinnedImageSet カスタムリソース (CR) を使用して、イメージをノードに固定できます。固定イメージセットは、事前にロードするイメージのリストと、イメージを固定するマシン設定プールを定義します。

イメージは、ノード上の /etc/crio/crio.conf.d/50-pinned-images ファイルに保存されます。

手順

  1. 次の例のように、PinnedImageSet オブジェクトを定義する YAML ファイルを作成します。

    apiVersion: machineconfiguration.openshift.io/v1
    kind: PinnedImageSet
    metadata:
      labels: 
    1
    
        machineconfiguration.openshift.io/role: worker
      name: worker-pinned-images
    spec:
      pinnedImages: 
    2
    
       - name: quay.io/openshift-release-dev/ocp-release@sha256:513cf1028aa1a021fa73d0601427a0fbcf6d212b88aaf9d76d4e4841a061e44e
       - name: quay.io/openshift-release-dev/ocp-release@sha256:61eae2d261e54d1b8a0e05f6b5326228b00468364563745eed88460af04f909b
    Copy to Clipboard Toggle word wrap

    ここでは、以下のようになります。

    labels
    オプションのノードセレクターを指定して、イメージを固定するマシン設定プールを指定します。指定しない場合は、イメージはクラスター内のすべてのノードに固定されます。
    pinnedImages
    事前に読み込む 1 つ以上のイメージのリストを指定します。
  2. 次のコマンドを実行して、PinnedImageSet オブジェクトを作成します。

    $ oc create -f <file_name>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行して、影響を受けるマシン設定プールのマシン設定ノードオブジェクトに固定イメージセットが報告されていることを確認します。

    $ oc describe machineconfignode <machine_config_node_name>
    Copy to Clipboard Toggle word wrap

    コマンドの例

    $ oc describe machineconfignode ci-ln-25hlkvt-72292-jrs48-worker-a-2bdj
    Copy to Clipboard Toggle word wrap

    イメージのプルと固定が成功した場合の出力例

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfigNode
    metadata:
      creationTimestamp: "2025-04-28T18:40:29Z"
      generation: 3
      name: <machine_config_node_name>
    # ...
    status
      pinnedImageSets:
      - currentGeneration: 1
        desiredGeneration: 1
        name: worker-pinned-images 
    1
    Copy to Clipboard Toggle word wrap

    1 1
    PinnedImageset オブジェクトは、マシン設定ノードに関連付けられています。

    次の例に示すように、MachineConfigNode オブジェクトのステータスフィールドに、失敗またはエラーメッセージが表示されます。

    イメージのプルと固定が失敗した場合の出力例

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfigNode
    metadata:
      creationTimestamp: "2025-04-28T18:40:29Z"
      generation: 3
      name: <machine_config_node_name>
    # ...
      - lastTransitionTime: "2025-04-29T19:37:23Z"
        message: One or more PinnedImageSet is experiencing an error. See PinnedImageSet
          list for more details
        reason: PrefetchFailed
        status: "True"
        type: PinnedImageSetsDegraded
      configVersion:
        current: rendered-worker-cef1b52c532e19a20add12e369261fba
        desired: rendered-worker-cef1b52c532e19a20add12e369261fba
      observedGeneration: 3
      pinnedImageSets:
      - desiredGeneration: 1
        lastFailedGeneration: 1
        lastFailedGenerationError: 'failed to execute podman manifest inspect for "quay.io/rh-ee/machine-config-operator@sha256:65d3a308767b1773b6e3499dde6ef085753d7e20e685f78841079":
          exit status 125'
        name: worker-pinned-images
    Copy to Clipboard Toggle word wrap

  • 固定されたイメージファイルが作成され、正しいイメージが含まれていることを確認します。

    1. 次のコマンドを実行して、ノードのデバッグセッションを開始します。

      $ oc debug node/<node_name>
      Copy to Clipboard Toggle word wrap
    2. 次のコマンドを実行して、デバッグシェル内のルートディレクトリーとして /host を設定します。

      sh-5.1# chroot /host
      Copy to Clipboard Toggle word wrap
    3. 次のコマンドを実行して、固定されたイメージファイルの内容を確認します。

      $ cat /etc/crio/crio.conf.d/50-pinned-images
      Copy to Clipboard Toggle word wrap

      出力例

      [crio]
        [crio.image]
          pinned_images = ["quay.io/openshift-release-dev/ocp-release@sha256:4198606580b69c8335ad7ae531c3a74e51aee25db5faaf368234e8c8dae5cbea", "quay.io/openshift-release-dev/ocp-release@sha256:513cf1028aa1a021fa73d0601427a0fbcf6d212b88aaf9d76d4e4841a061e44e", "quay.io/openshift-release-dev/ocp-release@sha256:61eae2d261e54d1b8a0e05f6b5326228b00468364563745eed88460af04f909b"]
      Copy to Clipboard Toggle word wrap

      ここでは、以下のようになります。

      pinnedImages
      影響を受けるマシン設定プールにプルされ、固定されたイメージを指定します。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

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

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

会社概要

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

Theme

© 2025 Red Hat