AKS v1.13のサポートが切れるというメールを受け取ったので、v1.14にバージョンアップしました。
バージョンアップ手順は 公式ページ に通りで問題なくできますが、考慮点など補足を書き残したいと思います。
AKSのバージョンサポートポリシー
AKSでは3つのマイナーバージョンがサポートされています。
詳しくは Azure Kubernetes Service (AKS) でサポートされている Kubernetes のバージョンを参照ください。
バージョンアップ前の確認
- 現在のAKSバージョンを確認しておきます。
# az aks show -g [Resource Group Name] -n [AKS Cluster Name] -o table
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn
------------ ---------- --------------- ------------------- ------------------- ---------------------------------------------
[Cluster Name] japaneast [Resource Group Name] 1.13.5 Succeeded xxx.hcp.japaneast.azmk8s.io
- 現在の各種ステータスを確認しておきます。
# kubectl get node -o wide
# kubectl get ns
# kubectl get po -o wide -n [NameSpace]
- 利用可能なバージョンを確認します。このときv1.13→v1.15のように2段階のバージョンアップはできません。
# az aks get-upgrades -g [Resource Group Name] -n [AKS Cluster Name] -o table
Name ResourceGroup MasterVersion NodePoolVersion Upgrades
------- --------------- --------------- ----------------- --------------------------------
default [Resource Group Name] 1.13.5 1.13.5 1.13.11, 1.13.12, 1.14.7, 1.14.8
AKSバージョンアップ
- バージョンアップを実行します。所要時間はノード数によると思いますが、2ノードで40分程掛かりました。
# az aks upgrade -g [Resource Group Name] -n [AKS Cluster Name] -k 1.14.8
- バージョンアップは、k8sノードをDrainにしてローリングアップデートします。
Podの状態が気になって確認コマンドを随時実行するかと思いますが、k8sノードのバージョンアップの前にk8sAPIのバージョンアップが入るため、タイミングによってはkubectlコマンドが失敗します。が、APIバージョンアップ中なので問題ないです。
Unable to connect to the server: read tcp xxx.xxx.xxx.xxx:54029->xxx.xxx.xxx.xxx:8080: wsarecv: An existing connection was forcibly closed by the remote host.
- しばらく経つとバージョンアップが完了します。
バージョンアップ後確認
- k8sノードのバージョンが変わっていることを確認します。
# kubectl get node -o wide
以上