5 Leappを使用したOracle Linux 8へのアップグレード
重要:
このドキュメントで説明されているソフトウェアは、Extended SupportまたはSustaining Supportにあります。 詳細は、「Oracleオープン・ソース・サポート・ポリシー」を参照してください。
このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお勧めします。
この章では、Leappユーティリティを使用して、Oracle Cloud Native EnvironmentのノードをOracle Linux 7からOracle Linux 8にアップグレードする方法について説明します。 Leappユーティリティは、オペレーティング・システムをOracle Linux 8にアップグレードし、Oracle Cloud Native Environmentインストールを維持します。
Leapの使用方法の詳細については、「Oracle Linux 8: Leappを使用したシステム・アップグレードの実行」を参照してください。
重要:
ノードをOracle Linux 8にアップグレードする場合は、最初にOracle Linux 7のOracle Cloud Native Environmentリリース1.5をインストールまたはアップグレードする必要があります。
アップグレードの概要
-
オペレータ・ノード(Platform APIサーバーがある場所)をアップグレードします。
-
コントロール・プレーンおよびワーカー・ノードをクラスタから削除し、Leappを使用してアップグレードします。
-
クラスタ内のノードを置換します。
高可用性Kubernetesクラスタのアップグレード時には、クラスタが常に次のものを持つことをお薦めします:
-
少なくとも3つのコントロール・プレーン・ノード。 アップグレード中は、クラスタ内に5つ以上のコントロール・プレーン・ノードが含まれるようにすることをお薦めします。
-
少なくとも3つのワーカー・ノード。
-
クラスタ内のワークロードには、ワーカー・ノードの1/3を削除できるだけの十分なリソースが必要です。 アップグレード中にアプリケーションの実行を継続できるだけの十分なリソースがクラスタにあることを確認してください。
アップグレードの実行に必要となるよりも長い時間、オペレーティング・システムが混在するクラスタを実行しないことをお薦めします。
リモート・コンソールの設定
Leappユーティリティでは、アップグレードを実行する前に各ノードでいくつかの設定が必要です。 このセクションの基本について説明します。 アップグレードする前にノード上で他のステップを実行する必要がある場合があるため、これらのステップを実行する前にLeappのドキュメントを読むことをお薦めします。 Leapの使用方法の詳細については、「Oracle Linux 8: Leappを使用したシステム・アップグレードの実行」を参照してください。
システム・コンソールにリモート接続するメソッドを設定します。 これにより、システムのリブート時にアップグレードを監視できます。 たとえば:
-
Oracle Cloud Infrastructure、クラウド・シェル接続コンソールを使用します。
-
Oracle X86サーバー、Oracle Integrated Lights Out Manager (ILOM)を使用します。
-
Oracle Private Cloud Appliance、インスタンス・コンソール接続を使用します。
-
Oracle Linuxカーネル・ベースの仮想マシン(KVM)は、Cockpit Webコンソール、virt-viewer、virt-managerなど、デプロイメントに適した仮想化管理ソフトウェアを使用します。
端末でSSHを使用してシステムに接続すると、アップグレードの実行中に切断され、アップグレードが完了するまで再度ログインできなくなります。
オペレータ・ノードのアップグレード
この項では、Leappを使用してオペレータ・ノードをOracle Linux 7からOracle Linux 8にアップグレードする方法を示します。 Kubernetesクラスタ内のノードをアップグレードする前に、オペレータ・ノードをアップグレードする必要があります。
オペレータ・ノードをアップグレードするには:
-
アップグレードするシステムで、オペレーティング・システムを最新のパッケージに更新します。
sudo yum update --disablerepo ol7_olcne15
-
システムを再起動します。
sudo reboot
-
システムが再起動したら、Leappアップグレード・ソフトウェア・パッケージをインストールします:
sudo yum install -y leapp-upgrade --enablerepo ol7_leapp,ol7_latest
-
root
ユーザーのSSHログイン権限を付与します。/etc/ssh/sshd_config
ファイルを編集して、CopyPermitRootLogin yes
エントリのコメントを削除します。sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
-
ファイルシステムのアンマウントやセキュア・ブートの無効化など、ここにリストされていないシステムに適用されるアップグレード前のステップがLeappのドキュメントに示されている場合があります。 「Oracle Linux 8: Leappを使用したシステム・アップグレードの実行」の説明に従って、システムのアップグレードを準備するためのその他のステップを理解し、実行します。
-
アップグレードするノードで、Leappアップグレードのインストール前チェック・スクリプトを実行します。 このスクリプトは、システムがアップグレードの準備ができているかどうかを確認し、アップグレード前に確認できるレポートを生成します。
これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp preupgrade --oci --enablerepo ol8_olcne15
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp preupgrade --oraclelinux --enablerepo ol8_olcne15
ホストは、アップグレードが続行できることを確認するためにチェックされ、アップグレードの実行時に
answerfile
が生成されます。 -
生成された
answerfile
の内容を確認し、問題を解決します。sudo cat /var/log/leapp/answerfile
remove_pam_pkcs11_module_check
のブロッキング・モジュール・チェックのセクションは、answerfile
から安全に削除できます。sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
詳細は、LeappドキュメントのLeapp
answerfile
の分析を参照してください。 -
Leappアップグレード・レポート・ファイルをレビューして、アップグレードで解決する必要がある問題を確認します。
sudo cat /var/log/leapp/leapp-report.txt
詳細は、LeappドキュメントのLeappアップグレード・レポートの分析を参照してください。
-
leapp preupgrade
コマンドを再度実行して、すべてのアップグレードの問題が解決されたことを確認します。これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp preupgrade --oci --enablerepo ol8_olcne15
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp preupgrade --oraclelinux --enablerepo ol8_olcne15
出力には、解決する必要のあるブロックの問題がないことが報告されます。
- アップグレード・レポート・ファイルを読んで、アップグレードでリスクを確認できます。
sudo cat /var/log/leapp/leapp-report.txt
-
Leappアップグレード・スクリプトを実行します。
このアップグレード・コマンドは、設定したリモート・コンソールを使用して実行するか、環境で使用できるため、発生時にアップグレードを監視し、ホストへの接続を失うことなくコマンドラインに割り込むことをお薦めします。 システムへのSSH端末接続を使用する場合は、アップグレード・スクリプトを実行できますが、システムの再起動時にセッションは切断されます。
これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp upgrade --oci --enablerepo ol8_olcne15
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp upgrade --oraclelinux --enablerepo ol8_olcne15
トランザクション・チェックが実行され、出力が表示されます。
-
システムを再起動してアップグレードを開始します。
sudo reboot
-
アップグレードが実行され、これには時間がかかる場合があります。 システム・コンソールを使用してアップグレードをモニターできます。 システムをアップグレードしたら、必要に応じてSSHを使用してシステムに再度ログインできます。
アップグレードが完了したら、システムを再起動します。
sudo reboot
-
システムの再起動後、次を使用してオペレーティング・システムのアップグレードを確認できます:
cat /etc/oracle-release
次のように、Oracle Linux 8の最新バージョンが表示されます:
Oracle Linux Server release 8.version
-
Oracle Cloud Native Environmentソフトウェア・パッケージが更新されたことを確認するには、次を使用します:
rpm -qa | egrep olcne | sort
出力には、インストールされているOracle Cloud Native Environmentソフトウェア・パッケージがリストされます。このパッケージはOracle Linux 8用で、次のようになります:
olcne-api-server-version.el8.x86_64 olcnectl-version.el8.x86_64 olcne-selinux-version.el8.x86_64 olcne-utils-version.el8.x86_64 oracle-olcne-release-el8-version.el8.x86_64
Kubernetesノードのアップグレード
この項では、Leappを使用してKubernetesノードをOracle Linux 7からOracle Linux 8にアップグレードする方法を示します。
まずコントロール・プレーン・ノードをアップグレードし、次にワーカー・ノードをアップグレードする必要があります。 クラスタからノードをスケール・アウトし、Oracle Linux 8へのアップグレードを実行してから、ノードをクラスタにスケール・バックする必要があります。
必要に応じて、クラスタの高可用性要件を維持してください。 高可用性クラスタの場合は、5つ以上のコントロール・プレーン・ノードと3つ以上のワーカー・ノードを持つクラスタを使用することをお薦めします。 クラスタ内のコントロール・プレーン・ノードの数は、3、5、7など、3以上の奇数である必要があります。 クラスタ内には常に3つ以上のコントロール・プレーン・ノードが含まれるようにし、ノード数は5つ以上にすることが推奨されるため、これが最も一般的なアップグレード・シナリオになると考えられます。
クラスタをスケール・ダウンして2つのコントロール・プレーン・ノードを一度に削除し、アップグレードされた2つのOracle Linux 8ノードに置換することをお薦めします。
重要:
Oracle Linux 8にアップグレードする必要があるノードが1つのみの場合でも、一度に2つのノードをスケール・ダウンしてスケール・アップすると、ネットワークの停止が発生した場合にクラスタのクォーラムが維持されます。
ノードで実行中のアプリケーションを他のノードに移行できるように、クラスタ内のワーカー・ノードは一度に1つずつ置換する必要があります。 クラスタ内のワーカー・ノードが4つ未満の場合は、クラスタ内のワーカー・ノードが3つ未満にならないようにするために、追加のリソースを見つけることを検討してください。 たとえば、追加のサーバーを一時的に導入して、アップグレード・プロセス中にワーカー・ノードの数を4つ以上に増やすことなどがあります。 そうしない場合、ワーカー・ノードで実行されているアプリケーションが期待どおりに動作しない可能性があります。
Kubernetesノードをアップグレードするには:
-
オペレータ・ノードで、
olcnectl module update
コマンドを使用してクラスタをスケール・ダウンし、Oracle Linux 8にアップグレードするOracle Linux 7ノードを削除します。コントロール・プレーン・ノードをスケール・ダウン(削除)するには、次の構文を使用します:
olcnectl module update \ --environment-name environment_name \ --name cluster_name \ --master-nodes node_list
ワーカー・ノードをスケール・ダウンするには、次の構文を使用します:
olcnectl module update \ --environment-name environment_name \ --name cluster_name \ --worker-nodes node_list
node_listオプションには、クラスタ内に残すノードのリストを含める必要があるため、このリストから削除するノードを省略します。
ヒント:
kubectl
が設定されているコントロール・プレーン・ノードでkubectl get nodes
コマンドを実行すると、クラスタ内のノードを確認できます:kubectl get nodes -o wide
-
アップグレードするシステムで、オペレーティング・システムを最新のパッケージに更新します。
sudo yum update --disablerepo ol7_olcne15
-
システムを再起動します。
sudo reboot
-
システムが再起動したら、Leappアップグレード・ソフトウェア・パッケージをインストールします:
sudo yum install -y leapp-upgrade --enablerepo ol7_leapp,ol7_latest
-
root
ユーザーのSSHログイン権限を付与します。/etc/ssh/sshd_config
ファイルを編集して、CopyPermitRootLogin yes
エントリのコメントを削除します。sudo sed -i 's/#PermitRootLogin yes/PermitRootLogin yes/g' /etc/ssh/sshd_config
-
ファイルシステムのアンマウントやセキュア・ブートの無効化など、ここにリストされていないシステムに適用されるアップグレード前のステップがLeappのドキュメントに示されている場合があります。 「Oracle Linux 8: Leappを使用したシステム・アップグレードの実行」の説明に従って、システムのアップグレードを準備するためのその他のステップを理解し、実行します。
-
アップグレードするノードで、Leappアップグレードのインストール前チェック・スクリプトを実行します。 このスクリプトは、システムがアップグレードの準備ができているかどうかを確認し、アップグレード前に確認できるレポートを生成します。
これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp preupgrade --oci --enablerepo ol8_olcne15,ol8_kvm_appstream
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp preupgrade --oraclelinux --enablerepo ol8_olcne15,ol8_kvm_appstream
ホストは、アップグレードが続行できることを確認するためにチェックされ、アップグレードの実行時に
answerfile
が生成されます。 -
生成された
answerfile
の内容を確認し、問題を解決します。sudo cat /var/log/leapp/answerfile
remove_pam_pkcs11_module_check
のブロッキング・モジュール・チェックのセクションは、answerfile
から安全に削除できます。sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True
詳細は、LeappドキュメントのLeapp
answerfile
の分析を参照してください。 -
Leappアップグレード・レポート・ファイルをレビューして、アップグレードで解決する必要がある問題を確認します。
sudo cat /var/log/leapp/leapp-report.txt
詳細は、LeappドキュメントのLeappアップグレード・レポートの分析を参照してください。
-
leapp preupgrade
コマンドを再度実行して、すべてのアップグレードの問題が解決されたことを確認します。これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp preupgrade --oci --enablerepo ol8_olcne15,ol8_kvm_appstream
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp preupgrade --oraclelinux --enablerepo ol8_olcne15,ol8_kvm_appstream
出力には、解決する必要のあるブロックの問題がないことが報告されます。
-
Leappアップグレード・スクリプトを実行します。
このアップグレード・コマンドは、設定したリモート・コンソールを使用して実行するか、環境で使用できるため、発生時にアップグレードを監視し、ホストへの接続を失うことなくコマンドラインに割り込むことをお薦めします。 システムへのSSH端末接続を使用する場合は、アップグレード・スクリプトを実行できますが、システムの再起動時にセッションは切断されます。
これがOracle Cloud Infrastructureインスタンスの場合は、次を使用します:
sudo leapp upgrade --oci --enablerepo ol8_olcne15,ol8_kvm_appstream
その他のすべてのOracle Linuxシステムでは、次を使用します:
sudo leapp upgrade --oraclelinux --enablerepo ol8_olcne15,ol8_kvm_appstream
トランザクション・チェックが実行され、出力が表示されます。
-
システムを再起動してアップグレードを開始します。
sudo reboot
-
アップグレードが実行され、これには時間がかかる場合があります。 システム・コンソールを使用してアップグレードをモニターできます。 システムをアップグレードしたら、必要に応じてSSHを使用してシステムに再度ログインできます。
アップグレードが完了したら、システムを再起動します。
sudo reboot
-
システムの再起動後、次を使用してオペレーティング・システムのアップグレードを確認できます:
cat /etc/oracle-release
次のように、Oracle Linux 8の最新バージョンが表示されます:
Oracle Linux Server release 8.version
-
Oracle Cloud Native Environmentソフトウェア・パッケージが更新されたことを確認するには、次を使用します:
rpm -qa | egrep 'olcne|kube|conmon|kata|cri-o|kvm' | sort
出力には、インストールされているOracle Cloud Native Environmentソフトウェア・パッケージがリストされます。このパッケージはOracle Linux 8用で、次のようになります:
conmon-version.el8.x86_64 cri-o-version.el8.x86_64 kata-version.el8.x86_64 ...
-
アップグレード後、SELinuxは
permissive
に設定されます。 アップグレード前にSELinuxがenforcing
に設定されている場合は、SELinux構成ファイルを更新して、再度enforcing
に設定します:sudo sed -i s/^SELINUX=.*$/SELINUX=enforcing/ /etc/selinux/config; sudo setenforce 1
-
アップグレード後スクリプトを実行します:
sudo /etc/olcne/scripts/olcne-ol8-post-leapp-upgrade
-
オペレータ・ノードで、
olcnectl module update
コマンドを使用してクラスタをスケール・アップし、アップグレードしたノードをOracle Linux 8に追加します。次の構文を使用して、コントロール・プレーン・ノードをスケール・アップ(追加)します:
olcnectl module update \ --environment-name environment_name \ --name cluster_name \ --master-nodes node_list
ワーカー・ノードをスケール・アップするには、次の構文を使用します:
olcnectl module update \ --environment-name environment_name \ --name cluster_name \ --worker-nodes node_list
node_listオプションには、クラスタ内に存在するノードのリストを含める必要があります。
ヒント:
kubectl
が設定されているコントロール・プレーン・ノードでkubectl get nodes
コマンドを実行すると、クラスタ内のノードを確認できます:kubectl get nodes -o wide