クラスタの更新
各KubernetesノードのOracle Container Host for Kubernetes (OCK)イメージを更新して、Kubernetesクラスタを更新する方法について学習します。
この項では、最新のKubernetesパッチ・リリースにノードを更新する方法、または次のKubernetesマイナー・リリースにノードを更新する方法について説明します。
パッチ・リリースには、エラータの更新が含まれ、Common Vulnerabilities and Exposures (CVE)の修正、Kubernetesの更新、OSの更新などが含まれる場合があります。 次のKubernetesマイナー・バージョンへの更新は、パッチ更新と同じ方法で実行され、Kubernetesバージョン番号を設定する追加のステップが1つあります。
Oracle CNEは、更新されたOracle Container Host for Kubernetes (OCK)イメージを介してすべての更新を提供します。 更新は、Kubernetesマイナー・バージョンに固有のOCKイメージを介して配信されます(たとえば、Kubernetesリリース1.31)。
各ノードは定期的にコンテナ・レジストリをポーリングして、実行されているOCKイメージの更新をチェックするか、Kubernetesをアップグレードする場合はターゲットKubernetesバージョンのイメージをチェックします。 アップグレードのKubernetesバージョンを設定すると、そのバージョンのイメージがクラスタ内のノードにプルおよびステージングされます。 パッチの更新は、各ノードに自動的にダウンロードされるため、ノードの更新前にステージングする必要はありません。
更新が使用可能な場合は、ocne node update
コマンドを使用してノードを再起動し、新しいイメージを使用します。 ノードに対してocne node update
コマンドを実行すると、次のアクションが完了します:
-
ノードは、クラスタから(
kubectl drain
コマンドを使用して)排出されます。 これにより、ノードからポッドが削除されます。 -
ホストOCKイメージがノードにインストールされ、ノードが再起動されます。
-
ノードは(
kubectl uncordon
コマンドを使用して)クラスタに戻され、ポッドの実行に使用できます。
コントロール・プレーン・ノードから順にノードを更新します。
ヒント:
時間を節約するために、コントロール・プレーン・ノードの1つが更新可能であると注釈が付けられ次第、更新プロセスを開始できます。
高可用性クラスタは、クラスタを停止せずに更新できます。 1つのコントロール・プレーン・ノードがオフラインになると、別のコントロール・プレーン・ノードによってクラスタが制御されます。 単一のコントロール・プレーン・ノードを持つクラスタでは、更新の実行中にコントロール・プレーン・ノードが短時間オフラインになります。
アプリケーションが複数のワーカー・ノードで実行されている場合、更新中は起動したまま使用可能になります。
クラスタ更新のベスト・プラクティス
Kubernetesクラスタを更新するためのベスト・プラクティスについて学習します。
次のリストは、本番環境でKubernetesクラスタを更新する際に従うベスト・プラクティスを示しています:
- etcdデータベースのバックアップ
-
まれにOCKイメージの更新が失敗した場合、更新は前のOCKイメージにロールバックされます。 ホストは、前のOCKイメージにリブートし、クラスタに再度参加します。 ただし、このような保護対策が行われているにもかかわらず、クラスタを更新する前に、ベスト・プラクティスに従い、
etcd
データベースをバックアップすることをお薦めします。
- ワーカー・ノードの前にコントロール・プレーン・ノードを更新
-
コントロール・プレーン内のノードは、常に最初に1つずつ更新してください。 別のノードで更新を開始する前に、作業中のコントロール・プレーン・ノードの更新が完了し、ノードがクラスタに再参加したことを確認します。
- 新しいKubernetesバージョンをステージングした直後にノードを更新
-
Kubernetesマイナー・アップグレードのイメージをステージングすると、クラスタは現在のバージョンのパッチ更新のポーリングを停止します。 したがって、アップグレードはできるだけ早く適用してください。
- Kubernetesルールの確認
-
特定のKubernetes構成では、アップグレードのためにノードをオフラインにできない場合があります。 たとえば、
PodDisruptionBudget
オブジェクトのminAvailable
フィールドは、常に使用可能である必要があるポッドの最小数を設定します。 ノードをオフラインにするには、実行中のポッドの数をminAvailable
フィールドに設定された数を超えるように増やす必要がある場合があります。PodDisruptionBudgets
の詳細は、アップストリームの「Kubernetesドキュメント」を参照してください。ヒント:
--disable-eviction
オプションをocne node update
コマンドとともに使用して、PodDisruptionBudget
をバイパスし、ドレイン・プロセス中にポッドを強制的に削除することもできます。 注意して使用してください。
Kubernetesパッチ更新
Kubernetesパッチ・リリースへの更新について説明します。
イメージの更新が検出されると、イメージは各ノードで自動的にプル、検証およびステージングされます。 イメージがステージングされると、ノードに注釈が付けられ、更新が使用可能であることが示されます。
ocne cluster info
コマンドを使用して、ノードに使用可能な更新があるかどうかを確認できます。 OCKイメージをインストールする準備ができたら、このコマンドの出力には、ノードのUpdate Available
フィールドがtrue
に設定されていることが示されます。
ノート:
ocne cluster info
コマンドを頻繁に実行して、更新を確認することをお薦めします。 更新を逃し、新しい更新が使用可能になると、最新の更新がプルおよびステージングされ、すぐに使用できます。 最新のパッチ・イメージは、常にノードで使用可能になります。 パッチの更新を逃した場合は、最新のパッチをインストールできます。
更新がステージングされたら、ocne node update
コマンドを使用してノードを再起動し、新しいイメージを使用します。
Kubernetesパッチ・リリースのインストール
KubernetesノードのOracle Container Host for Kubernetes (OCK)イメージを更新して、最新のKubernetesパッチ・リリースをインストールします。
Kubernetesクラスタ内の各ノードは、コンテナ・レジストリを定期的にポーリングして、実行されているOracle Container Host for Kubernetes (OCK)イメージに対するパッチ更新を確認します。 更新が検出されると、イメージは各ノードで自動的にプル、検証およびステージングされ、ノードに注釈が付けられて更新が表示されます。
Kubernetesマイナー更新
Kubernetesマイナー・リリースへの更新について説明します。
OCKイメージがそのバージョンで使用可能になったときに、クラスタを次のKubernetesマイナー・バージョンにアップグレードできます。 これを行うには、ocne cluster stage
コマンドを使用して、ターゲットのKubernetesバージョンを設定します。
ターゲットのKubernetesバージョンは、次に使用可能なマイナー・バージョンである必要があります。 たとえば、Kubernetesリリース1.29から1.31にアップグレードするには、最初にターゲットKubernetesリリースを1.30に設定し、すべてのノードを更新してから、ターゲット・バージョンを1.31に設定し、ノードを再度更新します。
ノードは、ターゲットKubernetesバージョンのOCKイメージのコンテナ・レジストリをポーリングします。 イメージが使用可能な場合、ノードはイメージをプルおよびステージングし、パッチ更新と同じ方法で更新を表示するようにノードに注釈を付けます。 再度、ocne node update
コマンドを使用して各ノードを手動で更新します。
ヒント:
クラスタがOCIで実行されていて、oci
プロバイダでプロビジョニングされている場合、KubernetesクラスタAPIコントローラを使用してKubernetesマイナー・バージョンに更新することもできます。 クラスタAPIを使用してアップグレードすると、既存のノードを1つずつアップグレードするのではなく、新しいOCKイメージを使用して新しいコンピュート・インスタンスがプロビジョニングされます。 oci
プロバイダでプロビジョニングされたクラスタのアップグレードの詳細は、「Kubernetesマイナー・リリースへのアップグレード」を参照してください。
Kubernetesマイナー・リリースへのアップグレード
KubernetesノードのOracle Container Host for Kubernetes (OCK)イメージを更新して、次のKubernetesマイナー・リリースにアップグレードします。
Oracle Container Host for Kubernetes (OCK)イメージがそのバージョンで使用可能になったときに、Kubernetesクラスタを次のマイナーKubernetesバージョンにアップグレードします。 ocne cluster stage
コマンドを使用して、ターゲットのKubernetesバージョンを設定します。