検索

12.7. コンテナーイメージ事前キャッシュ機能の使用

download PDF

シングルノード OpenShift クラスターでは、コンテナーイメージレジストリーにアクセスするための帯域幅が制限されている可能性があり、更新が完了する前に、タイムアウトが発生する可能性があります。

注記

更新の時間は TALM によって設定されていません。手動アプリケーションまたは外部自動化により、更新の開始時に ClusterGroupUpgrade CR を適用できます。

コンテナーイメージの事前キャッシュは、ClusterGroupUpgrade CR で preCaching フィールドが true に設定されている場合に起動します。

TALM は PrecacheSpecValid 条件を使用して、次のようにステータス情報を報告します。

  • true

    事前キャッシュの仕様は有効で一貫性があります。

  • false

    事前キャッシュの仕様は不完全です。

TALM は PrecachingSucceeded 条件を使用して、次のようにステータス情報を報告します。

  • true

    TALM は事前キャッシュプロセスを完了しました。いずれかのクラスターで事前キャッシュが失敗した場合、そのクラスターの更新は失敗しますが、他のすべてのクラスターの更新は続行されます。クラスターの事前キャッシュが失敗した場合は、メッセージで通知されます。

  • false

    1 つ以上のクラスターで事前キャッシュがまだ進行中か、すべてのクラスターで失敗しました。

事前キャッシュプロセスに成功すると、ポリシーの修復を開始できます。修復アクションは、enable フィールドが true に設定されている場合に開始されます。クラスターで事前キャッシュエラーが発生した場合、そのクラスターのアップグレードは失敗します。アップグレードプロセスは、事前キャッシュが成功した他のすべてのクラスターに対して続行されます。

事前キャッシュプロセスは、以下のステータスにあります。

  • NotStarted

    これは、すべてのクラスターが ClusterGroupUpgrade CR の最初の調整パスで自動的に割り当てられる初期状態です。この状態では、TALM は、以前の不完全な更新から残ったスポーククラスターの事前キャッシュの namespace およびハブビューリソースを削除します。次に TALM は、スポーク前の namespace の新規の ManagedClusterView リソースを作成し、PrecachePreparing 状態の削除を確認します。

  • PreparingToStart

    以前の不完全な更新からの残りのリソースを消去すると進行中です。

  • Starting

    キャッシュ前のジョブの前提条件およびジョブが作成されます。

  • Active

    ジョブは "Active" の状態です。

  • Succeeded

    事前キャッシュジョブが成功しました。

  • PrecacheTimeout

    アーティファクトの事前キャッシュは部分的に行われます。

  • UnrecoverableError

    ジョブはゼロ以外の終了コードで終了します。

12.7.1. コンテナーイメージの事前キャッシュフィルターの使用

通常、事前キャッシュ機能は、クラスターが更新に必要とするよりも多くのイメージをダウンロードします。どの事前キャッシュイメージをクラスターにダウンロードするかを制御できます。これにより、ダウンロード時間が短縮され、帯域幅とストレージが節約されます。

次のコマンドを使用して、ダウンロードするすべてのイメージのリストを表示できます。

$ oc adm release info <ocp-version>

次の ConfigMap の例は、excludePrecachePatterns フィールドを使用してイメージを除外する方法を示しています。

apiVersion: v1
kind: ConfigMap
metadata:
  name: cluster-group-upgrade-overrides
data:
  excludePrecachePatterns: |
    azure 1
    aws
    vsphere
    alibaba
1
TALM は、ここにリストされているパターンのいずれかを含む名前を持つすべてのイメージを除外します。

12.7.2. 事前キャッシュでの ClusterGroupUpgrade CR の作成

シングルノード OpenShift の場合は、事前キャッシュ機能により、更新が開始する前に、必要なコンテナーイメージをスポーククラスターに配置できます。

注記

事前キャッシュの場合、TALM は ClusterGroupUpgrade CR の spec.remediationStrategy.timeout 値を使用します。事前キャッシュジョブが完了するのに十分な時間を与える timeout 値を設定する必要があります。事前キャッシュの完了後に ClusterGroupUpgrade CR を有効にすると、timeout 値を更新に適した期間に変更できます。

前提条件

  • Topology Aware Lifecycle Manager (TALM) をインストールしている。
  • 1 つ以上のマネージドクラスターをプロビジョニングします。
  • cluster-admin 権限を持つユーザーとしてログインしている。

手順

  1. clustergroupupgrades-group-du.yaml ファイルで preCaching フィールドを true に設定して ClusterGroupUpgrade CR の内容を保存します。

    apiVersion: ran.openshift.io/v1alpha1
    kind: ClusterGroupUpgrade
    metadata:
      name: du-upgrade-4918
      namespace: ztp-group-du-sno
    spec:
      preCaching: true 1
      clusters:
      - cnfdb1
      - cnfdb2
      enable: false
      managedPolicies:
      - du-upgrade-platform-upgrade
      remediationStrategy:
        maxConcurrency: 2
        timeout: 240
    1
    preCaching フィールドは true に設定されています。これにより、更新を開始する前に TALM がコンテナーイメージをプルできます。
  2. 事前キャッシュを開始する場合は、次のコマンドを実行して ClusterGroupUpgrade CR を適用します。

    $ oc apply -f clustergroupupgrades-group-du.yaml

検証

  1. 以下のコマンドを実行して、ClusterGroupUpgrade CR がハブクラスターに存在するかどうかを確認します。

    $ oc get cgu -A

    出力例

    NAMESPACE          NAME              AGE   STATE        DETAILS
    ztp-group-du-sno   du-upgrade-4918   10s   InProgress   Precaching is required and not done 1

    1
    CR が作成されます。
  2. 以下のコマンドを実行して、事前キャッシュタスクのステータスを確認します。

    $ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'

    出力例

    {
      "conditions": [
        {
          "lastTransitionTime": "2022-01-27T19:07:24Z",
          "message": "Precaching is required and not done",
          "reason": "InProgress",
          "status": "False",
          "type": "PrecachingSucceeded"
        },
        {
          "lastTransitionTime": "2022-01-27T19:07:34Z",
          "message": "Pre-caching spec is valid and consistent",
          "reason": "PrecacheSpecIsWellFormed",
          "status": "True",
          "type": "PrecacheSpecValid"
        }
      ],
      "precaching": {
        "clusters": [
          "cnfdb1" 1
          "cnfdb2"
        ],
        "spec": {
          "platformImage": "image.example.io"},
        "status": {
          "cnfdb1": "Active"
          "cnfdb2": "Succeeded"}
        }
    }

    1
    特定されたクラスターの一覧を表示します。
  3. スポーククラスターで以下のコマンドを実行して、事前キャッシュジョブのステータスを確認します。

    $ oc get jobs,pods -n openshift-talo-pre-cache

    出力例

    NAME                  COMPLETIONS   DURATION   AGE
    job.batch/pre-cache   0/1           3m10s      3m10s
    
    NAME                     READY   STATUS    RESTARTS   AGE
    pod/pre-cache--1-9bmlr   1/1     Running   0          3m10s

  4. 以下のコマンドを実行して ClusterGroupUpgrade CR のステータスを確認します。

    $ oc get cgu -n ztp-group-du-sno du-upgrade-4918 -o jsonpath='{.status}'

    出力例

    "conditions": [
        {
          "lastTransitionTime": "2022-01-27T19:30:41Z",
          "message": "The ClusterGroupUpgrade CR has all clusters compliant with all the managed policies",
          "reason": "UpgradeCompleted",
          "status": "True",
          "type": "Ready"
        },
        {
          "lastTransitionTime": "2022-01-27T19:28:57Z",
          "message": "Precaching is completed",
          "reason": "PrecachingCompleted",
          "status": "True",
          "type": "PrecachingSucceeded" 1
        }

    1
    キャッシュ前のタスクが実行されます。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.