type
status
date
slug
summary
tags
category
icon
password
书籍

OpenShiftのアップグレード

目的
このセクションを終えると、OpenShiftのインスタンスをどのようにアップグレードするかを説明できるようになります。

OpenShiftのアップグレードについて

OpenShift Container Platformの新しいバージョンがリリースされると、既存のクラスターをアップグレードして、最新の機能強化やバグ修正を適用できます。これには、例えば、3.7から3.9へのアップグレードや、3.7.zのマイナーバージョンへの更新が含まれます。
重要な注意点
  • OpenShift 3.9には、Kubernetes 1.8および1.9の機能や修正が統合されています。OpenShift 3.7からアップグレードする場合、クラスターは自動的に3.9にアップグレードされます。
  • メジャーバージョン間でアーキテクチャが大きく変更されているため、OpenShift Enterprise 2からOpenShift 3にはアップグレードできません。この場合はクリーンインストールが必要です。
バージョン間の互換性
  • 基本的に、ノードとマスターは1つのマイナーバージョン間で前方および後方互換性があります。ただし、バージョンが一致しない状態で長期間運用するのは避け、できるだけ早くクラスター全体をアップグレードすることが推奨されます。

アップグレード方法

OpenShiftのアップグレードには2つの方法があります。
  1. インプレースアップグレード
      • クラスター内のすべてのホストでアップグレードを行う方法です。
      • マスターが先にアップグレードされ、その後ノードがアップグレードされます。ポッドは他のノードに移動して、ダウンタイムを最小限に抑えます。
      • 注意: クイックインストール方法は非推奨です。3.7から3.9へのアップグレードには使用できません。
  1. ブルーグリーンデプロイメント
      • ダウンタイムを減らすために、2つの同一環境を稼働させ、1つを更新してテストします。
      • アップグレード中、ノードの一部はスケジューリング不可にし、ポッドを他のノードに移動させます。アップグレードが成功した後、ノードは再びスケジューリング可能になります。

自動化されたクラスターアップグレード

Ansible Playbooksを使用して、OpenShiftクラスターのアップグレードを自動化できます。これにより、手動での作業を減らし、効率よくアップグレードできます。
  • 自動アップグレードの内容:
    • 設定変更を適用
    • Etcdデータの保存
    • APIのアップグレード(3.7 → 3.8 → 3.9)
    • ルーターやレジストリのアップグレード
    • デフォルトのイメージストリームとテンプレートの更新
  • 重要な注意点:
    • アップグレードを行う前に、すべての前提条件を満たしていることを確認してください。これを怠ると、アップグレードが失敗することがあります。
  • GlusterFSを使用している場合:
    • コンテナ化されたGlusterFSを使用している場合、ノードのポッドがDaemonSetとして実行されるため、ノードがポッドを排出しません。アップグレードの際は以下の手順を踏んでください:
        1. マスター、Etcd、インフラサービス(ルーター、レジストリ、ログ、メトリック)をアップグレード
        1. アプリケーションコンテナを実行しているノードをアップグレード
        1. GlusterFSを実行しているノードを1台ずつアップグレード

アップグレード前の準備

クラスターをOpenShift 3.9にアップグレードする前に、3.7の最新の非同期リリースにアップグレードしておく必要があります。これを怠ると、アップグレードが失敗する可能性があります。
  • アップグレードは1つのマイナーバージョンを超えて行えない:
    • 例えば、3.5 → 3.6 → 3.7というように、1バージョンずつ順番にアップグレードしなければなりません。

クラスターのインクリメンタルアップグレード

以前のバージョンからクラスターをインクリメンタルにアップグレードするには、次の場所にあるプレイブックを使用します:
/usr/share/ansible/openshift-ansible/playbooks/common/openshift-cluster/upgrades/
このディレクトリには以下の構造があります:
それぞれのリリースディレクトリには、マスターとノードを一度にアップグレードするためのファイルや、マスターとノードを別々にアップグレードするためのファイルが含まれています。この方法については「クラスターの複数段階でのアップグレード」で説明します。
注意
アップグレードを試みる前に、oc adm diagnostics コマンドでクラスターの健康状態を確認してください。これにより、ノードが「Ready」状態であることや、予期したバージョンが実行されていること、エラーや警告がないことを確認できます。オフラインインストールの場合は、--network-pod-image='REGISTRY URL/IMAGE' パラメータで使用するイメージを指定します。

自動化されたアップグレードの準備

次の手順で、環境を自動アップグレードのために準備します。アップグレードを実施する前に、Red Hatはインベントリファイルを確認し、手動で行った変更が反映されていることを確認することを推奨しています。反映されていない場合、変更内容はデフォルト値で上書きされる可能性があります。
  1. OpenShift Container Platform 3.7から3.9へのアップグレードの場合、各マスターおよびノードホストで3.7のリポジトリを無効にし、3.8および3.9のリポジトリを有効にします:
    1. 各Red Hat Enterprise Linux 7システムで、最新のatomic-openshift-utilsパッケージをインストールして、openshift-ansible-*パッケージも更新します:
      1. OpenShift 3.9では、マスターノードはデフォルトでスケジュール不可にはなっていません。アップグレードプロセス中に自動的にスケジュール可能に設定されます。
      1. openshift_disable_swap=falseをインベントリファイルに追加した場合や、ノードで手動でスワップを設定した場合は、アップグレードを実行する前にスワップメモリを無効にしてください。

      マスターおよびアプリケーションノードのアップグレード

      前述の準備が完了した後、次の手順でOpenShiftクラスターのアップグレードを実施します。
      1. インベントリファイルで openshift_deployment_type=openshift-enterprise という変数を設定します。
      1. カスタムDockerレジストリを使用している場合は、openshift_web_console_prefixtemplate_service_broker_prefix の変数にレジストリのアドレスを明示的に指定する必要があります。これらの値はアップグレードプロセス中にAnsibleによって使用されます。
        1. サービスの再起動やノードの再起動を有効にしたい場合は、インベントリファイルで openshift_rolling_restart_mode=system を設定します。このオプションを設定しない場合、アップグレード中にサービスの再起動は行われますが、システムの再起動は行われません。
        1. 全ノードを一度にアップグレードする場合は、単一のAnsibleプレイブック(upgrade.yml)を実行します。複数段階でアップグレードを行う場合は、プレイブックを分けて実行します。この方法については「クラスターの複数段階でのアップグレード」に記載されています。
        1. すべてのホストを再起動します。再起動後、追加機能をデプロイしていなければ、アップグレードが正常に完了したことを確認できます。

        クラスターの複数段階でのアップグレード

        複数段階でアップグレードを行う場合、最初の段階ではupgrade_control_plane.ymlプレイブックを使用して、次のコンポーネントをアップグレードします:
        • マスターノード
        • マスターノードで実行されているノードサービス
        • マスターノードおよびスタンドアロンのEtcdホストで実行されているDockerサービス
        次の段階では、upgrade_nodes.ymlプレイブックを使用して、以下のコンポーネントをアップグレードします。最初の段階でマスターノードがアップグレードされている必要があります:
        • ノードサービス
        • スタンドアロンノードで実行されているDockerサービス

        このように、OpenShiftのアップグレードは段階的に進めることができ、環境の安定性を保ちながらスムーズにアップグレードを行うことができます。

        2段階のアップグレードプロセス

        2段階のアップグレードプロセスでは、カスタム変数を指定することで、アップグレードの実行方法をカスタマイズできます。例えば、ノードの50%をアップグレードする場合、以下のコマンドを実行します:
        HAリージョンで2つのノードを同時にアップグレードする場合、以下のコマンドを実行します:
        各アップデートバッチで失敗するノードの数を指定するには、openshift_upgrade_nodes_max_fail_percentageオプションを使用します。この値を超える失敗が発生した場合、Ansibleはアップグレードを中止します。openshift_upgrade_nodes_drain_timeoutオプションを使用して、プレイブックを中止する前に待機する時間を指定できます。
        次の例では、10ノードずつアップグレードし、ノードの20%(2ノード)が失敗した場合にプレイブックを中止します。また、openshift_upgrade_nodes_drain_timeoutオプションでノードを排出するための待機時間を600秒に設定しています:

        Ansibleフックの使用

        特定の操作を実行するためにカスタムタスクをフックで実行できます。フックを使用すると、アップグレードプロセス中の特定のポイントの前後でタスクを実行することができます。例えば、クラスターのアップグレード時にインフラコンポーネントを更新したり、検証を行うことができます。
        重要
        フックにはエラーハンドリング機構がないため、フック内でエラーが発生するとアップグレードプロセスが停止します。その場合は、フックを修正して再度アップグレードを実行する必要があります。
        インベントリファイルの [OSEv3:vars] セクションでフックを定義します。各フックはAnsibleタスクを定義した.YAMLファイルを指し、そのファイルは include ステートメントの一部として統合され、タスクのセットを定義します。Red Hatでは、曖昧さを避けるために絶対パスを使用することを推奨しています。
        以下のフックは、アップグレードプロセスをカスタマイズするために利用可能です:
        1. openshift_master_upgrade_pre_hook: 各マスターノードのアップグレード前に実行されるフック。
        1. openshift_master_upgrade_hook: 各マスターノードのアップグレード後、マスターサービスやノードが再起動する前に実行されるフック。
        1. openshift_master_upgrade_post_hook: 各マスターノードのアップグレード後、サービスやシステムの再起動が行われた後に実行されるフック。
        以下の例では、インベントリファイルでフックを統合する方法を示します:
        この例では、pre_master.yml ファイルに次のタスクが含まれています:

        アップグレードの確認

        アップグレードが完了した後、アップグレードが正常に終了したかを確認するために、次の手順を実行します。
        1. すべてのノードが「Ready」状態になっていることを確認します:
        1. docker-registryrouter のイメージバージョンを確認します。タグは3.9のリリースと一致している必要があります:
        1. マスターノードで診断ツールを使用して、一般的な問題を確認します:

        参考資料

        さらに詳細な情報は、OpenShift Container Platformインストールガイドの「クラスターのアップグレード」章に記載されています。

        以上が、アップグレードの確認とカスタマイズに関する説明です。
         

        QUIZ: OpenShiftのアップグレード手順
        OpenShiftクラスターを自動的にアップグレードするための手順です。手順を実行する順番を並べてください。
        1. まず、Red Hat Enterprise Linux 7の各システムに最新のatomic-openshift-utilsパッケージがインストールされていることを確認します。
        1. もしカスタムDockerレジストリを使っている場合は、openshift_web_console_prefixtemplate_service_broker_prefixという設定にレジストリのアドレスを指定します。
        1. 次に、すべてのノードでスワップメモリを無効にします。
        1. すべてのホストを再起動し、再起動後にアップグレードが正しく行われたか確認します。
        1. 必要に応じて、インベントリファイルのノードセレクターを確認します。
        1. 各マスターおよびノードホストで、3.7リポジトリを無効にし、3.8および3.9リポジトリを有効にします。
        1. 適切なAnsible Playbookを使って、アップグレードを1フェーズまたは複数フェーズで実行します。
        1. 最後に、インベントリファイルにopenshift_deployment_type=openshift-enterpriseを設定します。

        解答: OpenShiftのアップグレード手順
        1. 各マスターおよびノードホストで、3.7リポジトリを無効にし、3.8および3.9リポジトリを有効にします。
        1. まず、Red Hat Enterprise Linux 7の各システムに最新のatomic-openshift-utilsパッケージがインストールされていることを確認します。
        1. 必要に応じて、インベントリファイルのノードセレクターを確認します。
        1. 次に、すべてのノードでスワップメモリを無効にします。
        1. インベントリファイルにopenshift_deployment_type=openshift-enterpriseを設定します。
        1. もしカスタムDockerレジストリを使っている場合は、openshift_web_console_prefixtemplate_service_broker_prefixという設定にレジストリのアドレスを指定します。
        1. 適切なAnsible Playbookを使用して、アップグレードを1フェーズまたは複数フェーズで実行します。
        1. すべてのホストを再起動し、再起動後にアップグレードを確認します。
        これが正しい順番です。
         
        相关文章
        RedHat EX200 本番近い試験問題集
        Lazy loaded image
        RedHat EX200 本番試験問題集(有料版)
        Lazy loaded image
        82- 第17章:導入総復習-3:OpenShiftにマルチコンテナデプロイのラボ
        Lazy loaded image
        81- 第17章:導入総復習-2:docker,KubernetesおよびOpenShiftのラボ
        Lazy loaded image
        80- 第17章:導入総復習-1:総合レビュー
        Lazy loaded image
        79- 第16章:OpenShiftの管理と監視-8:ラボ
        Lazy loaded image
        74- 第16章:OpenShiftの管理と監視-4:アプリケーションの監視とプローブの説明72- 第16章:OpenShiftの管理と監視-2:リソース制限の演習
        Loading...
        みなみ
        みなみ
        一个普通的干饭人🍚
        最新发布
        令和5年秋期 午後問1
        2025-5-3
        令和2年秋期 午後問1
        2025-5-2
        第1回:オリエンテーション/意思決定と会計情報
        2025-4-30
        第1回:イントロダクション
        2025-4-30
        第1回:イントロダクション
        2025-4-30
        宅建業法の基本と免許-59問
        2025-4-30
        公告

        🎉 欢迎访问我的博客 🎉

        🙏 感谢您的支持 🙏

        📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
        📖 博客语言使用比例
        🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

        📚 主要内容

        💻 IT・系统与开发

        • 系统管理:Red Hat 等
        • 容器与编排:Kubernetes、OpenShift
        • 云计算:AWS、IBM Cloud
        • AI 入门:人工智能基础与实践
        • 技术笔记与考证经验

        🏠 不动产 × 宅建士

        • 宅建士考试笔记

        🎓 MBA 学习笔记

        • 管理学、经济学、财务分析等

        🔍 快速查找内容(标签分类)

        由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
        📌 定期更新,欢迎常来看看!
        📬 有任何建议或想法,也欢迎留言交流!