本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「AKSのK8sバージョンアップは2ステップ #Kubernetesリレー」を再編集したものです。
AKS(Azure Kubernetes Service)の中で動作しているKubernetesは特定のバージョンで動作しています。
Kubernetesの新しいバージョンはかなり頻繁にリリースされるため、定期的にバージョンアップを実施する必要が出てきます。
アプリケーションのことを棚に上げてAzure的な都合を考えると、バージョンアップの作業は2ステップです。
バージョンアップの2ステップ
AKSのバージョンアップは、下記の2ステップにて進めます。
1. コントロールプレーンのKubernetesバージョンアップ
AKSの場合、コントロールプレーンというKubernetesの仕組みを維持する部分がAzure内に隠ぺいされています。この部分のKubernetesのバージョンアップを先に実施する必要があります。
2. ノードプールのKubernetesバージョンアップ
AKSの場合、ノードプール=アプリケーションのPodを配置する場所のKubernetesのバージョンアップを実施する必要があります。こちらはコントロールプレーンのKubernetesバージョンが上がっていないとバージョンを上げることができません。
…以前はAzureポータルなどからこの2つの操作を順次実行しなければなりませんでした。 しかし、現在はAzureポータルの「クラスター設定」→「アップグレード」のところから指定すれば、コントロールプレーンとノードプール両方のバージョンアップをまとめてリクエストできるようです、どんどん進化していますね!
アプリケーション面の懸念
Kubernetesのバージョンについて、特にメジャーバージョンアップを実施する場合は使用できなくなる機能が出てきたりするため、Kubernetesのバージョンアップを実施してもアプリケーションが動作するか、事前の動作確認が必要になってきます。
また、PDB(Pod Disruption Budgets)の設定で最低限動作していなければならないPod数が指定されている場合、KubernetesのバージョンアップによるノードからPodを追い出す作業が完了できず、バージョンアップに失敗することも経験しました。
kubectl get pdb --all-namespaces を実行して状態を確認することもひとつのポイントかもしれません。
まとめ
Kubernetesのバージョンアップは操作の手間自体は少ないですが、アプリケーションの正常動作を維持できるよう適切に計画を立てて実施しましょう。
松枝 宏樹/FIXER
愛知県在住、リモートワーク気味なエンジニア。
得意分野はC#、ASP.NET、terraform、AKSなど。