読者です 読者をやめる 読者になる 読者になる

しばやん雑記

ASP.NET とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Container Service の Kubernetes でもスケーリングが可能になっていたので試す

先週の段階では Azure Container Service で Kubernetes を作った場合には、スケーリングが未対応だと Azure Portal に表示されていたのですが、Build に合わせてなのか Kubernetes でも対応されたようです。

Azure Container Service を作って Agent を開くと、VM の数が入力できるようになってます。

f:id:shiba-yan:20170512000502p:plain

保存すると、数分後には新しい Kubernetes のノードが作成されて、ダッシュボードからステータスを確認できるようになります。大体 5 分ぐらいで追加まで終わった気がします。

Windows でも問題なくスケーリングが行えるのは喜ばしいです。

f:id:shiba-yan:20170512000258p:plain

ところで Kubernetes を選んだ場合には、スケーリングに対応したというのに VMSS は作られていませんでした。VMSS とは別の方法でインスタンスの増減を行っているようです。

これだと Managed Disk への対応は DC/OS や Swarm に比べて遅くなりそうな気がします。

f:id:shiba-yan:20170512000626p:plain

可変ノード数の Kubernetes クラスタが簡単に作れるようになったので、DeamonSet とか試すにはもってこいな感じがしますね。

VMSS だとノードのオートスケールも可能な気もしますが、Kubernetes の場合は利用できないでしょう。

増やす場合の挙動はなんとなく想像がつくので、あえて減らす方向を試してみます。まずはこれまで通り ASP.NET アプリケーションをデプロイしますが、3 ポッド分作ります。

f:id:shiba-yan:20170512002135p:plain

ノード数とポッド数が同じなので、全てのノードにポッドがデプロイされている状態です。ここからインスタンスを 1 つまで減らしてみます。

一度に 2 つの VM を落とすのではなく、順番に 1 つずつ落とされていきました。

f:id:shiba-yan:20170512002716p:plain

肝心のポッドはレプリカセットによって、自動的に残っているノードに対してデプロイされて、設定している 3 ポッドが起動している状態にしてくれるようです。

当然ながら意図した動作ではありますが、こういった確認は重要ですね。

f:id:shiba-yan:20170512002812p:plain

以前に ECS の Windows 対応で複数アプリを 1 インスタンスにデプロイできない問題がありましたが、Kubernetes を使うと同じコンテナを 1 インスタンスに複数同時に立てることが出来るのが面白いです。

残った 1 ノードで 3 つのポッドが動作しているのがダッシュボードから確認できます。

f:id:shiba-yan:20170512002936p:plain

レプリカセットのおかげでいい感じにポッド数を保ったまま、インスタンスを増減が簡単に出来ました。

大体問題になるのがノード VM のメンテナンスなんですが、新しいノードを追加して古いものを削除する方法でも良さそうです。もうちょっと経験を積む必要がありそうです。