既存の自己管理ノードを置き換えることによる新しいKubernetesバージョンへの自己管理ノード のアップグレード

Container Engine for Kubernetesで作成された拡張クラスタ内の自己管理ノードで実行されているKubernetesのバージョンをアップグレードする方法をご紹介します。

ノート

この項は、自己管理ノードにのみ適用されます。管理対象ノードのアップグレードの詳細は、「管理対象ノードの新しいKubernetesバージョンへのアップグレード」を参照してください。

元の自己管理ノードを新しいKubernetesバージョンを実行している新しい自己管理ノードに置き換えることで、自己管理ノードで実行されているKubernetesのバージョンをアップグレードできます。新しいポッドが開始されないように元の自己管理ノードをドレインし、既存のポッドを削除したら、元の自己管理ノードをホストしているコンピュート・インスタンスを終了できます。

新しい自己管理ノードを作成する場合は、Kubernetesのドキュメントで説明されているKubernetesバージョン・スキュー・サポート・ポリシーに準拠するKubernetesバージョンを含むイメージを指定する必要があります。Container Engine for Kubernetesでは、新しい自己管理ノードに指定したイメージ内のKubernetesバージョンが、クラスタのコントロール・プレーン・ノードで実行されているKubernetesバージョンと互換性があるかどうかは確認されません。Cluster Requirementsを参照してください。

元の自己管理ノードを新しい自己管理ノードに置き換えて、自己管理ノードで実行されているKubernetesのバージョンをアップグレードするには:

  1. 新しい自己管理ノードをホストする新しいコンピュート・インスタンスを作成します:
    1. ナビゲーション・メニューを開き、「コンピュート」をクリックします。「コンピュート」で、「インスタンス」をクリックします。
    2. 新しいコンピュート・インスタンスを作成するには、コンピュート・サービスのドキュメントの手順に従います。新しいコンピュート・インスタンスが拡張クラスタに参加できるようにするには、適切なポリシーが存在する必要があります。「自己管理ノードの動的グループおよびポリシーの作成」を参照してください。
    3. イメージとシェイプ」セクションで、「イメージの変更」をクリックします。
    4. 「マイ・イメージ」をクリックし、「イメージOCID」オプションを選択してから、新しいKubernetesバージョンを実行しているOKE Oracle Linux 7 (OL7)またはOracle Linux 8 (OL8)イメージのOCIDを入力します。イメージ要件を参照してください。
    5. 「拡張オプションの表示」をクリックし、「管理」タブで「cloud-initスクリプトの貼付け」オプションを選択します。
    6. Kubernetes APIプライベート・エンドポイントおよびbase64でエンコードされたCA証明書を含むcloud-initスクリプトをコピーして、Cloud-initスクリプト・フィールドに貼り付けます。「自己管理ノードのCloud-initスクリプトの作成」を参照してください。
    7. 「作成」をクリックして、自己管理ノードをホストするコンピュート・インスタンスを作成します。

    コンピュート・インスタンスが作成されると、指定したKubernetes APIエンドポイントを使用して、自己管理ノードとしてクラスタに追加されます。

  2. 自己管理ノードがKubernetesクラスタに追加されたことを確認し、次のように入力してノードの準備状況を確認します:
    kubectl get nodes

    例:

    kubectl get nodes
    
    NAME           STATUS   ROLES    AGE   VERSION
    10.0.103.170   Ready    <none>   40m   v1.25.4
  3. 次のように入力して、ラベルがノードに追加され、予期したとおりに設定されていることを確認します。
    kubectl get node <node-name> -o json | jq '.metadata.labels'

    たとえば

    kubectl get node 10.0.103.170 -o json | jq '.metadata.labels'
    
    {
    ...
    "displayName": "oke-self-managed-node",
    "oci.oraclecloud.com/node.info.byon": "true",
    ...
    }
  4. 元の自己管理ノードにアタッチされているラベルがあり、それらのラベルがセレクタで使用される場合(たとえば、ポッドを実行するノードを決定する場合)、kubectl label nodesコマンドを使用して、同じラベルを新しい自己管理ノードにアタッチします。Kubernetesのドキュメントの、ノードへのポッドの割当てを参照してください。
  5. 次のように入力して、新しいポッドが開始されないようにし、元の自己管理ノード上の既存のポッドを削除します:

    kubectl drain <node_name>

    詳細は次を参照してください。

    推奨: アプリケーションに適したポッド中断予算を活用し、排出操作全体で十分な数のレプリカ・ポッドが実行されていることを確認します。

  6. 元の自己管理ノードをドレインし、ポッドが新しい自己管理ノードで実行されている場合は、元の自己管理ノードをホストしているコンピュート・インスタンスを終了します。インスタンスの終了を参照してください。