先週の段階では Azure Container Service で Kubernetes を作った場合には、スケーリングが未対応だと Azure Portal に表示されていたのですが、Build に合わせてなのか Kubernetes でも対応されたようです。
Azure Container Service を作って Agent を開くと、VM の数が入力できるようになってます。
保存すると、数分後には新しい Kubernetes のノードが作成されて、ダッシュボードからステータスを確認できるようになります。大体 5 分ぐらいで追加まで終わった気がします。
Windows でも問題なくスケーリングが行えるのは喜ばしいです。
ところで Kubernetes を選んだ場合には、スケーリングに対応したというのに VMSS は作られていませんでした。VMSS とは別の方法でインスタンスの増減を行っているようです。
これだと Managed Disk への対応は DC/OS や Swarm に比べて遅くなりそうな気がします。
可変ノード数の Kubernetes クラスタが簡単に作れるようになったので、DeamonSet とか試すにはもってこいな感じがしますね。
VMSS だとノードのオートスケールも可能な気もしますが、Kubernetes の場合は利用できないでしょう。
増やす場合の挙動はなんとなく想像がつくので、あえて減らす方向を試してみます。まずはこれまで通り ASP.NET アプリケーションをデプロイしますが、3 ポッド分作ります。
ノード数とポッド数が同じなので、全てのノードにポッドがデプロイされている状態です。ここからインスタンスを 1 つまで減らしてみます。
一度に 2 つの VM を落とすのではなく、順番に 1 つずつ落とされていきました。
肝心のポッドはレプリカセットによって、自動的に残っているノードに対してデプロイされて、設定している 3 ポッドが起動している状態にしてくれるようです。
当然ながら意図した動作ではありますが、こういった確認は重要ですね。
以前に ECS の Windows 対応で複数アプリを 1 インスタンスにデプロイできない問題がありましたが、Kubernetes を使うと同じコンテナを 1 インスタンスに複数同時に立てることが出来るのが面白いです。
残った 1 ノードで 3 つのポッドが動作しているのがダッシュボードから確認できます。
レプリカセットのおかげでいい感じにポッド数を保ったまま、インスタンスを増減が簡単に出来ました。
大体問題になるのがノード VM のメンテナンスなんですが、新しいノードを追加して古いものを削除する方法でも良さそうです。もうちょっと経験を積む必要がありそうです。