今回はAKS(Azure Kubernetes Service)のクラスタアップグレードに関してです。
やること自体は多くはないのですが、クラスタアップグレードしたら壊れましたけど何か?的なお話も聞いたので
ちょっと怖いなーと思っている方のために、こんな感じですよという参考になれば。
現在のバージョンの確認
まずは現在のクラスタのバージョンを取得します。
今回は例としてリソースグループがRG-TOMATO-CLUSTER
、クラスタ名がTOMATO-CL USTER
としています。
$ az aks show --resource-group RG-TOMATO-CLUSTER --name TOMATO-CLUSTER --output table
Name Location ResourceGroup KubernetesVersion ProvisioningState Fqdn
--------------- ---------- ---------------------- ------------------- ------------------- -------------------------------------------------------------------
TOMATO-CLUSTER japaneast RG-TOMATO-CLUSTER 1.15.5 Succeeded xxxx.hcp.japaneast.azmk8s.io
アップグレード可能バージョンの取得
現在のバージョンからアップグレード可能なバージョンを表示します。
注意点として、マイナーバージョンを飛ばしてアップグレードすることはできません。
例えば1.15
からアップグレード可能なのは1.15
もしくは1.16
のみであり
1.17
にアップグレードしたい場合は、一度1.16
を経由する必要があります。
$ az aks get-upgrades --resource-group RG-TOMATO-CLUSTER --name TOMATO-CLUSTER --output yaml
controlPlaneProfile:
kubernetesVersion: 1.15.5
name: null
osType: Linux
upgrades:
- isPreview: null
kubernetesVersion: 1.15.11
- isPreview: null
kubernetesVersion: 1.16.8
- isPreview: null
kubernetesVersion: 1.15.10
- isPreview: null
kubernetesVersion: 1.16.9
この辺りは割とこまめに変更されるようなので、アップグレード実施前に確認しておきましょう。
いざアップグレード
いよいよアップグレードです。
たかが1コマンドされど1コマンド。Enter
を押す指がプルプルします。
プルプルを通り越して揺れてます!とても揺れている!震度6だ!
こういう時にEnter
を勢いよく押す派、静かに押す派、あなたはどちらの派閥でしょう?
私は超サイレント派です。
$az aks upgrade --resource-group RG-TOMATO-CLUSTER --name TOMATO-CLUSTER --kubernetes-version 1.16.9
The behavior of this command has been altered by the following extension: aks-preview
Kubernetes may be unavailable during cluster upgrades.
Are you sure you want to perform this operation? (y/n): y
Since control-plane-only argument is not specified, this will upgrade the control plane AND all nodepools to version 1.16.9. Continue? (y/N): y
Starting ..
Running ..
本当にやります?え、まじでやるんですか?的な感じで2回聞かれます。
大事なことは2回言う文化は各国共通なのでしょうか。
断固とした気持ちでy
を2回押下すると、Running ..
と表示されます。
どうやら動き出した模様。
もう後戻りはできません。楽しかった1.15
との思い出が走馬灯のように浮かびます..
30分ほど待つ..
今回は3nodeだったので30分程で完了しました。だいたい1nodeにつき10分くらいのようです。
たまたまカップラーメンを10個作る予定があったので、ちょうど良い時間でした!ではいただきます!
Finished ..
DnsPrefix EnablePodSecurityPolicy EnableRbac Fqdn KubernetesVersion Location MaxAgentPools Name NodeResourceGroup ProvisioningState ResourceGroup
---------------------------------- ------------------------- ------------ ----------------------------------- ------------------- ---------- --------------- --------------- --------------------------------------------------- ------------------- ----------------------
TOMATO-CLUS-4b4e88 False True xxxx.hcp.japaneast.azmk8s.io 1.16.9 japaneast 10 TOMATO-CLUSTER RG-TOMATO-CLUSTER_japaneast Succeeded RG-TOMATO-CLUSTER
実際にやってみるとかなりスムーズに行きました。あっさり塩味ですね。
ちなみにclusterのアップグレード自体もローリングで行なっているようですが
公式には特に記載がないので、ダウンタイムは発生するものと思っておいたほうが良さそうです。
ではまた🙋♂️
さいごに
ZEROBILLBANKでは一緒に働く仲間を募集中です。
なんとかjsとか、ブロックチェーンとか、kubernetesとかでいろんなAPIを作るお仕事。
今のところエンジニアは5人くらい。スタートアップだけど、結構ホワイトで働きやすいです。