新しいKubernetesバージョンへの仮想ノードのアップグレード
Kubernetes Engineで作成された拡張クラスタ内の仮想ノードで実行されているKubernetesのバージョンをアップグレードする方法をご紹介します。
クラスタのKubernetesバージョンをアップグレードすると、Kubernetes Engineによってコントロール・プレーンおよび仮想ノードが調整された方法でアップグレードされます。Kubernetes Engineは、所定の仮想ノードをアップグレードし、クラスタで実行されている高可用性ワークロードがアップグレード中に中断されないようにします。
アプリケーションの停止時間を短縮するために、アベイラビリティ・ドメインおよびフォルト・ドメインに分散している仮想ノード上に複数のポッド・レプリカを構成することをお薦めします。ワークロードの可用性を最大化するためにポッド中断予算を構成することで、ワークロードの可用性をさらに制御できます(Kubernetesドキュメントのアプリケーションの中断予算の指定を参照)。
仮想ノードで実行されている各ポッドには、クラスタの制御ノードで実行されているKubernetesバージョンに固有のkube-proxyコンポーネントが含まれています。仮想ノードをアップグレードすると、Kubernetesエンジンは、アップグレードされたコントロール・プレーン・ノードで実行されているバージョンのKubernetesに対して正しいkube-proxyコンポーネントを使用して仮想ノード・プールで再スケジュールする前に、各ポッドを削除します。
新しいKubernetesバージョンに仮想ノードをアップグレードするには:
- クラスタのコントロール・プレーン・ノードで実行されているKubernetesのバージョンをアップグレードする手順に従います(クラスタ内のコントロール・プレーン・ノードでのKubernetesバージョンのアップグレードを参照)。
クラスタ内の各仮想ノード・プールの仮想ノードで実行されているKubernetesのバージョンは、自動的にアップグレードされます。
- (オプション) GetVirtualNodePool API操作を使用して、仮想ノード・プールのアップグレードのステータスを
lifecycleState
プロパティの値として確認します。仮想ノード・プールのアップグレードのステータスは、次のいずれかとして返されます:- 更新中:仮想ノード・プール内のクラスタ、仮想ノードおよびポッドがアップグレード中であることを示します。
- アクティブ:仮想ノード・プール内のクラスタ、仮想ノードおよびすべてのポッドがアップグレードされたことを示します。
- (オプション)
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"}'