1 更新およびアップグレードの概要
このドキュメントでは、「更新」 Oracle Cloud Native EnvironmentおよびKubernetesを最新のエラータ・リリースに、または「アップグレード」をリリース1.7からリリース1.8にする方法を説明します。 この章では、アップグレードという用語は、全体的なプロセスが同じであるため、アップグレードと更新の両方を意味します。
アップグレードの最初のステップは、Oracle Cloud Native Environmentソフトウェア・パッケージをアップグレードすることです。 これには、ノード上のPlatform API ServerまたはPlatform Agentの停止、Oracle Cloud Native Environmentパッケージのアップグレード、およびPlatform API ServerまたはPlatform Agentの再起動が含まれます。
次のステップでは、Kubernetesソフトウェア・パッケージをアップグレードします。 これは、適切なolcnectl module update
コマンドを発行したときにPlatform API Serverによって実行されます。
クラスタを停止せずに高可用性クラスタをアップグレードできます。 コントロール・プレーン・ノードは逐次的にアップグレードされるため、一方のコントロール・プレーン・ノードがオフラインになると、もう一方のコントロール・プレーン・ノードがクラスタを制御します。 コントロール・プレーン・ノードが1つのクラスタでは、アップグレードの実行中にコントロール・プレーン・ノードが短時間オフラインになります。
また、ワーカー・ノードも逐次的にアップグレードされます。 アプリケーションが複数のワーカー・ノードで実行されている場合、それらは稼働状態を維持し、アップグレード中も使用可能になります。
重要:
Kubernetesルールによっては、アップグレードのためにノードをオフラインにできない場合があります。 PodDisruptionBudgetはこれらのオブジェクトの1つです。 ノードをオフラインにするには、実行中のポッドの数をMinAvailable値を超えるまで増やします。 PodDisruptionBudgetsの詳細は、アップストリームの「Kubernetesドキュメント」を参照してください。
アップグレードの開始前に、障害が発生した場合に必要となる可能性のあるリカバリに役立つバックアップがコントロール・プレーン・ノードから取得されます。
重要:
モジュールの更新が失敗した場合、バックアップを使用してコントロール・プレーン・ノードをリカバリできます。 コントロール・プレーン・ノード・バックアップからのリストアの詳細は、「Kubernetesモジュール」を参照してください。
Kubernetesのリリース(エラータまたは新しいリリース)は、各ノードでアップグレードされます。 まずコントロール・プレーン・ノードがアップグレードされ、次にワーカー・ノードがアップグレードされます。 ノードのアップグレード・プロセス中に、次のステップが実行されます。
-
ノードが(
kubectl drain
コマンドを使用して)クラスタから排出され、ポッドが削除されます。 -
kubeadm
パッケージがアップグレードされます。 -
ノードは、
kubeadm upgrade
コマンドを使用してアップグレードされます。 -
kubectl
パッケージとkubelet
パッケージがアップグレードされます。 -
kubelet
サービスが再開されます。 -
ノードは(
kubectl uncordon
コマンドを使用して)クラスタに戻され、ポッドの実行に使用できます。
Kubernetesを更新またはアップグレードするには、olcnectl module update
コマンドを使用して、環境内のKubernetesモジュールを更新します。 次の章に示すolcnectl module update
コマンド・オプションは、Kubernetesをアップグレードするために必要な最小限のコマンドです。 これらの追加オプションを使用することもできます:
-
--generate-scripts
オプションは、モジュールの更新中に検証が失敗した場合に、ノードごとに実行できるスクリプトを生成します。 モジュール内の各ノードに対してスクリプトが作成され、ローカル・ディレクトリに保存され、hostname:8090.sh
という名前が付けられます。 -
--force
オプションを指定すると、表示されているプロンプトが非表示になり、モジュールの更新が確認されます。 -
--container-registry
オプションを使用すると、更新またはアップグレードの実行時に常にデフォルトになる新しいコンテナ・レジストリを指定できます。 たとえば:--container-registry container-registry-austin-mirror.oracle.com/olcne/