世界のやまさ

SEKAI NO YAMASA

Azure Container Service を節約して使う

f:id:nnasaki:20170507230317p:plain

Azure Container Service で Kubernetes を使う記事を前回書きました。

blog.nnasaki.com

今回は Azure Container Service(ACS) を立ち上げっぱなしにしているとお金が結構かかるので、節約する方法をご紹介します。

Azure Contaner Service の料金について

azure.microsoft.com

ACS は、Virtual Machines (VM) をコンテナー サービスにクラスタリングする無料のサービスです。VM と、関連するストレージとネットワーク リソースの使用した分だけをお支払いいただきます。

と、書いてあるとおりでコンテナーの管理サービスは無料ですが、中で動くVMなどのリソースの分お金がかかります。

具体的には今回サンプルで作ったリソースグループ内は全部で30リソースあり、次のようになっています。

f:id:nnasaki:20170507224134p:plain f:id:nnasaki:20170507224159p:plain f:id:nnasaki:20170507224220p:plain

特に仮想マシンはノード5つ分とマスター3つ分で合計8台あります。F2sで作成しましたので、8,727.12(円/月) * 8 (台) = 69,816.96(円/月)と中々痛い金額になってしまいます。

その他ストレージやパブリックIPアドレスなども出費はあるのですが、仮想マシンと比べれば微々たるものです。

仮想マシンを使わないときは割当を解除する

結論から言うと、Azure CLI などを使用してリソースグループ内の仮想マシンをすべて割当を解除すれば良いです。コマンドはこちらです。k8s-southeastasiaをお使いのリソースグループ名に置換してください。

az vm deallocate --ids $(az vm list -g k8s-southeastasia --query "[].id" -o tsv) --no-wait

--ids オプションで複数のリソースIDを受け取って処理してくれます。

仮想マシンを使うときに開始する

開始もほぼ同様に次の通りです。同じようにk8s-southeastasiaをお使いのリソースグループ名に置換してください。

az vm start --ids $(az vm list -g k8s-southeastasia --query "[].id" -o tsv) --no-wait

Tips:仮想マシンをシャットダウンするだけでは課金は止まらない

実は stop というコマンドもあるんですが、こちらは仮想マシンをシャットダウンをするだけで割当を解除しません。

az vm stop --ids $(az vm list -g k8s-southeastasia --query "[].id" -o tsv) --no-wait

なにがダメかというと、シャットダウンしただけでは課金は止まりません

ポータルで確認すると次のような画面になっています。

f:id:nnasaki:20170507225605p:plain

ちゃんと注意が出ていますね。理由はこちらにも書いてあります。必ず割当を解除するようにしてください。

blogs.msdn.microsoft.com

まとめ

stop を使いたくなりますが deallocate を使いましょう。