既存の自己管理ノードを置き換えることによる新しいKubernetesバージョンへの自己管理ノード のアップグレード
Kubernetes Engineで作成された拡張クラスタ内の自己管理ノードで実行されているKubernetesのバージョンをアップグレードする方法をご紹介します。
元の自己管理ノードを新しいKubernetesバージョンを実行している新しい自己管理ノードに置き換えることで、自己管理ノードで実行されているKubernetesのバージョンをアップグレードできます。新しいポッドが開始されないように元の自己管理ノードをドレインし、既存のポッドを削除したら、元の自己管理ノードをホストしているコンピュート・インスタンスを終了できます。
新しい自己管理ノードを作成する場合は、Kubernetesのドキュメントで説明されているKubernetesバージョン・スキュー・サポート・ポリシーに準拠するKubernetesバージョンを含むイメージを指定する必要があります。Kubernetes Engineは、新しい自己管理ノードに指定したイメージ内のKubernetesバージョンが、クラスタのコントロール・プレーン・ノードで実行されているKubernetesバージョンと互換性があるかどうかをチェックしません。Cluster Requirementsを参照してください。
元の自己管理ノードを新しい自己管理ノードに置き換えて、自己管理ノードで実行されているKubernetesのバージョンをアップグレードするには:
- 新しい自己管理ノードをホストする新しいコンピュート・インスタンスを作成します:
- ナビゲーション・メニューを開き、「コンピュート」を選択します。「コンピュート」で、「インスタンス」を選択します。
- 新しいコンピュート・インスタンスを作成するには、コンピュート・サービスのドキュメントの手順に従います。新しいコンピュート・インスタンスが拡張クラスタに参加できるようにするには、適切なポリシーが存在する必要があります。「自己管理ノードの動的グループおよびポリシーの作成」を参照してください。
- 「イメージとシェイプ」セクションで、「イメージの変更」をクリックします。
- 「マイ・イメージ」をクリックし、「イメージOCID」オプションを選択してから、新しいKubernetesバージョンを実行しているOKE Oracle Linux 7 (OL7)またはOracle Linux 8 (OL8)イメージのOCIDを入力します。イメージ要件を参照してください。
- 「拡張オプションの表示」をクリックし、「管理」タブで「cloud-initスクリプトの貼付け」オプションを選択します。
- Kubernetes APIプライベート・エンドポイントおよびbase64でエンコードされたCA証明書を含むcloud-initスクリプトをコピーして、Cloud-initスクリプト・フィールドに貼り付けます。「自己管理ノードのCloud-initスクリプトの作成」を参照してください。
- 「作成」をクリックして、自己管理ノードをホストするコンピュート・インスタンスを作成します。
コンピュート・インスタンスが作成されると、指定したKubernetes APIエンドポイントを使用して、自己管理ノードとしてクラスタに追加されます。
- 自己管理ノードがKubernetesクラスタに追加されたことを確認し、次のように入力してノードの準備状況を確認します:
kubectl get nodes
例:
kubectl get nodes NAME STATUS ROLES AGE VERSION 10.0.103.170 Ready <none> 40m v1.25.4
- 次のように入力して、ラベルがノードに追加され、予期したとおりに設定されていることを確認します。
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", ... }
- 元の自己管理ノードにアタッチされているラベルがあり、それらのラベルがセレクタで使用される場合(たとえば、ポッドを実行するノードを決定する場合)、
kubectl label nodes
コマンドを使用して、同じラベルを新しい自己管理ノードにアタッチします。Kubernetesのドキュメントの、ノードへのポッドの割当てを参照してください。 -
次のように入力して、新しいポッドが開始されないようにし、元の自己管理ノード上の既存のポッドを削除します:
kubectl drain <node_name>
詳細は次を参照してください。
- kubectlの使用については、kubectlを使用したクラスタへのアクセスを参照してください
- drainコマンドの詳細は、Kubernetesのドキュメントの排出を参照してください
推奨: アプリケーションに適したポッド中断予算を活用し、排出操作全体で十分な数のレプリカ・ポッドが実行されていることを確認します。
-
元の自己管理ノードをドレインし、ポッドが新しい自己管理ノードで実行されている場合は、元の自己管理ノードをホストしているコンピュート・インスタンスを終了します。インスタンスの終了を参照してください。