新しいKubernetesバージョンへの仮想ノードのアップグレード

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

クラスタのKubernetesバージョンをアップグレードすると、Kubernetes Engineによってコントロール・プレーンおよび仮想ノードが調整された方法でアップグレードされます。Kubernetes Engineは、所定の仮想ノードをアップグレードし、クラスタで実行されている高可用性ワークロードがアップグレード中に中断されないようにします。

アプリケーションの停止時間を短縮するために、アベイラビリティ・ドメインおよびフォルト・ドメインに分散している仮想ノード上に複数のポッド・レプリカを構成することをお薦めします。ワークロードの可用性を最大化するためにポッド中断予算を構成することで、ワークロードの可用性をさらに制御できます(Kubernetesドキュメントのアプリケーションの中断予算の指定を参照)。

仮想ノードで実行されている各ポッドには、クラスタの制御ノードで実行されているKubernetesバージョンに固有のkube-proxyコンポーネントが含まれています。仮想ノードをアップグレードすると、Kubernetesエンジンは、アップグレードされたコントロール・プレーン・ノードで実行されているバージョンのKubernetesに対して正しいkube-proxyコンポーネントを使用して仮想ノード・プールで再スケジュールする前に、各ポッドを削除します。

新しいKubernetesバージョンに仮想ノードをアップグレードするには:

  1. クラスタのコントロール・プレーン・ノードで実行されているKubernetesのバージョンをアップグレードする手順に従います(クラスタ内のコントロール・プレーン・ノードでのKubernetesバージョンのアップグレードを参照)。

    クラスタ内の各仮想ノード・プールの仮想ノードで実行されているKubernetesのバージョンは、自動的にアップグレードされます。

  2. (オプション) GetVirtualNodePool API操作を使用して、仮想ノード・プールのアップグレードのステータスをlifecycleStateプロパティの値として確認します。
    仮想ノード・プールのアップグレードのステータスは、次のいずれかとして返されます:
    • 更新中:仮想ノード・プール内のクラスタ、仮想ノードおよびポッドがアップグレード中であることを示します。
    • アクティブ:仮想ノード・プール内のクラスタ、仮想ノードおよびすべてのポッドがアップグレードされたことを示します。
  3. (オプション) oci.oraclecloud.com/pod.info.kubernetes_versionポッド注釈を使用して、クラスタ内の各ポッドで現在実行されているkube-proxyのバージョンを確認します。たとえば、次のように入力します:
    kubectl get pods --all-namespaces -o jsonpath='{range .items[*]}{.metadata.namespace}{"/"}{.metadata.name}{", "}{.metadata.annotations.oci\.oraclecloud\.com\/pod\.info\.kubernetes_version}{"\n"}'