管理対象ノードからKubernetesバージョン1.35 (以降)へのアップグレード

OKE OL7イメージ、OL7プラットフォーム・イメージまたはOL7イメージに基づくカスタム・イメージを現在使用している管理対象ノードをアップグレードし、Kubernetes Engine (OKE)を使用してKubernetesバージョン1.35 (以降)およびOL8を実行する方法について説明します。

ノート

この項は、管理対象ノードにのみ適用されます。自己管理ノードをアップグレードする方法の詳細は、既存の自己管理ノードを置き換えることで新しいKubernetesバージョンへの自己管理ノードのアップグレードを参照してください。

Kubernetesバージョン1.35以降、Kubernetesにはコンテナ・リソース管理用のcgroup v2が必要です。

制御グループ(cgroups)は、プロセスまたはプロセスのグループのリソース割り当てを管理および制御するためのメカニズムを提供する Linuxカーネル機能です。コントロール・グループ・バージョン2 (cgroups v2)グループは、すべてのリソース・コントローラがマウントされる単一の制御グループ階層を提供します。この階層では、様々なリソース・コントローラ間でリソースの使用を調整できます。

Oracle Linux 7 (OL7)ではcgroup v1がサポートされますが、cgroup v2はサポートされません。Oracle Linux 8 (OL8)以降のバージョンでは、cgroups v1とcgroups v2の両方がサポートされていますが、cgroups v2がデフォルトでOL8で常に有効になっているわけではありません。

要約すると、Kubernetesバージョン1.35では、cgroup v2を有効にしたOL8 (またはそれ以降)が必要です。

ビルド番号が1367以上のOKE OL8イメージでは、Cgroups v2がデフォルトで有効になっています。ただし、ビルド番号が1367 (およびOL8プラットフォーム・イメージ)より小さいOKE OL8イメージでは、cgroups v1がデフォルトで有効になっています。

Kubernetesバージョン1.35 (以降)を実行しているクラスタ上のワーカー・ノードの場合、Kubernetes Engineは次のイメージをサポートします:

次のイメージは、Kubernetesバージョン1.35ではサポートされていないことに注意してください:

  • OKE OL7イメージはサポートされていません。
  • プラットフォーム・イメージ(OL7プラットフォーム・イメージとOL8プラットフォーム・イメージの両方)はサポートされていません。
  • OKE OL7イメージに基づくカスタム・イメージはサポートされていません。
  • OL7プラットフォーム・イメージに基づくカスタム・イメージはサポートされていません。

現在OL8イメージを使用している管理対象ノードを、Kubernetesバージョン1.35 (以降)にアップグレードする場合は、次の点に注意してください:

  • ビルド番号が1367未満のOKE OL8イメージ(またはOKE OL8イメージに基づくカスタム・イメージ)を現在使用している管理対象ノードをアップグレードするには、インプレース・アップグレードを実行し、ビルド番号が1367以上のOKE OL8イメージを指定します。
  • インプレース・アップグレードを実行し、ビルド番号が1367以上のOKE OL8イメージを指定することで、現在OL8プラットフォーム・イメージを使用している管理対象ノードをアップグレードできます。
  • ノードをホストしているコンピュート・インスタンスのLinuxカーネルでcgroup v2がすでに有効になっているかどうかに関係なく、現在OL8イメージを使用している管理対象ノードのインプレース・アップグレードを実行できます。
  • インプレース・アップグレードを実行する手順は、新しいKubernetesバージョンへの管理対象ノードのアップグレードを参照してください。

OKE OL7イメージを現在使用している管理対象ノード、OL7プラットフォーム・イメージまたはOL7イメージに基づくカスタム・イメージをアップグレードしてKubernetesバージョン1.35 (以降)を実行するには、アウトオブプレース・アップグレードを実行して、既存のノード・プールを新しいノード・プールに置き換えます:

  1. コンソールまたはCLIを使用して、OL7を使用する既存のノード・プールを次のように識別します。

    • コンソールの使用:

      1. 「クラスタ」リスト・ページで、表示するノード・プールを含むクラスタの名前を選択します。リスト・ページまたはクラスタの検索に関するヘルプが必要な場合は、クラスタのリストを参照してください。
      2. 「ノード・プール」タブを選択します。
      3. 「イメージ名」列を使用して、Oracle-Linux-7.9.xイメージを使用するノード・プールを識別します。
    • CLIの使用:次のようなコマンドを入力して、OL7を使用する既存のノード・プールを識別します。

      oci ce node-pool list --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --query 'data[*].{name:"name", image:"node-source"."image-id"}'
  2. コンソールまたはCLIを使用して、次のようにOL8イメージを使用する置換ノード・プールを作成します。

    • コンソールの使用:

      1. 「ノード・プール」タブで、「ノード・プールの追加」を選択し、新しいノード・プールの詳細を入力します。
      2. Oracle Linux 8.xイメージに基づいて「OKEワーカー・ノード・イメージ」を選択します。
      3. OL7ノード・プールと同じシェイプ、サイズおよび配置で新しいノード・プールを構成します。
      4. 「作成」を選択します。
    • CLIの使用:次のようなコマンドを入力して、OL8イメージを使用する置換ノード・プールを作成します。

      oci ce node-pool create --cluster-id <cluster-ocid> --compartment-id <compartment-ocid> --name "nodepool-ol8-workers" --node-shape "VM.Standard.E4.Flex" --kubernetes-version "v1.35.0" --node-image-id <ol8-image-ocid> --size 3 --placement-configs '[{"availabilityDomain":"AD-1","subnetId":"<subnet-ocid>"}]'
  3. OL7ノードをコード化します。

    1. 次のように入力して、OL7ノードの名前を取得します。

      kubectl get nodes -l node.kubernetes.io/os=ol7
    2. 次のように入力して、各ノードをコード化します。

      kubectl cordon <node-name>
  4. OL7ノードをドレインして、ワークロードを正常に移行します。

    1. 次のように入力して、各OL7ノードを排出します。
      kubectl drain <node-name> --ignore-daemonsets --delete-emptydir-data --force
    2. 次のように入力して、ワークロードが新しいノードで再スケジュールされていることを確認します。
      kubectl get pods -A -o wide | grep <node-name>
  5. コンソールまたはCLIを使用して、次のようにOL7ノード・プールを削除します。

    • コンソールの使用:

      1. 「ノード・プール」タブで、OL7ノード・プールの横にある「アクション」メニュー(3つのドット)から「ノード・プールの削除」を選択します。
      2. 「削除」をクリックします。
      3. ノード・プールを削除することを確認し、「削除」を選択します。
    • CLIの使用: OL7ノード・プールを削除します。

      oci ce node-pool delete --node-pool-id <ol7-nodepool-ocid>
  6. クラスタをアップグレードします(たとえば、Kubernetesバージョン1.35)。

    oci ce cluster update --cluster-id <cluster-ocid> --kubernetes-version "v1.35.0"

詳細は、「既存のノード・プールを新しいノード・プールに置き換えることで管理対象ノードKubernetesアップグレードの実行」を参照してください。