VerrazzanoがインストールされているKubernetesのアップグレード

Verrazzanoがクラスタにインストールされた後、そのクラスタのKubernetesバージョンをアップグレードできます。VerrazzanoでサポートされているKubernetesバージョンの詳細は、「前提条件」を参照してください。

次に、Kubernetesクラスタ更新のドキュメント・ソースを示します。このリストに表示されない場合は、クラスタ・プロバイダのアップグレード・ドキュメントを参照してください。

マルチノード・クラスタのアップグレード

一般的なマルチノードKubernetesクラスタの場合、ノードのアップグレード中は、1つ以上のノードが存在し、使用可能な状態にしておくことをお薦めします。これにより、コードンされたノードが使用可能なノードにポッドを分散できるため、アップグレード中の停止時間がなくなります。クラスタ・プロバイダは、インプレース・アップグレードでのノード可用性の維持に関する情報を提供できます。

単一ノード・クラスタのアップグレード

単一ノード・クラスタのアップグレードの場合、アップグレード中にノードをコードンできるようにするために、クラスタで停止時間が発生します。このため、Kubernetesノードを完全にドレインするために実行する必要がある手動の回避ステップがいくつかあります。

MySQLポッド中断予算の無効化

MySQL Operatorは、MySQLデータベース・ポッドのポッド中断予算をデプロイします。このポッド中断予算により、ノードはドレインされません。これを変更するには、ポッド中断予算にパッチを適用して、MySQLレプリカをノードからドレインできるようにします。

$ kubectl patch poddisruptionbudgets.policy -n keycloak mysql-pdb -p '{"spec":{"minAvailable":0, "maxUnavailable":null}}' --type=merge

MySQLポッド・ファイナライザの削除

ノードのドレイン中に、MySQLポッドがTerminating状態でスタックする可能性があります。MySQLポッドが終了を完了しないことが判明した場合は、ファイナライザを削除して、これらのポッドを手動で終了できます。

$ kubectl patch pod -n keycloak mysql-0 -p '{"metadata":{"finalizers":null}}' --type=merge

Rancher Helmポッドの削除

Rancherはクラスタ操作のためにHelmポッドをスピンアップします。これらのポッドはどの親リソースでも管理されないため、ノードのドレインを防ぐことができます。この場合、次のコマンドを使用してこれらのポッドを削除できます。

$ kubectl get pods --no-headers=true -n cattle-system | awk '{print $1}' | grep helm | xargs kubectl delete pod --ignore-not-found -n cattle-system