Azure

Azure で Kubernetes を 複数の可用性セットとLoad Balancerで100台以上の Large Scale する方法。

はじめに

くどうです。

Azure で Kubernetes をLarge Scale を説明していきます。
AKSでは現行nodeを100台までのスケールしか行えません。
大規模なシステムでは100台ですまないケースがあります。
そこで、今回は100台以上Scaleする場合を例に説明していきたいと思います。

下記では2500nodeに対応した時の話が書かれています。興味あるひとはどうぞ。
Scaling Kubernetes to 2,500 Nodes
https://blog.openai.com/scaling-kubernetes-to-2500-nodes/

Large Scale

Azureで100台以上のScaleを考えた場合以下の二つの方法が考えられます。
AzureにKubernetesを展開する5つの方法
・Jujuで展開する方法
・ACS-Engineで展開する方法

Jujuでは何台まで展開できるか書かれていないのと、Azureに最適化されているわけではないためACS-Engineをおすすめします。
ACS-Engineでは1200nodeまで対応できると書いてあります。
https://github.com/Azure/acs-engine/tree/master/examples/largeclusters
では、ACS-Engineで展開する方法ですがここを参考してください。

展開の方法は変わりません。
ACS-Engineの展開yamlが少々変わります。
https://github.com/Azure/acs-engine/blob/master/examples/kubernetes.json

しかし、上記の方法では可用性セット上に200台という制限があります。
https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits#virtual-machines-limits—azure-resource-manager
また、Load Balancerの利用を想定した場合、現行のKubernetesではLB Basicしか利用できないため100台という制限に引っかかります。
https://docs.microsoft.com/ja-jp/azure/azure-subscription-service-limits#load-balancer

そこで下記のように可用性セットを分割して最大100台の構成を複数展開します。
そして、可用性セット毎にLBを配置します。ある程度の台数を想定して可用性セット(agentpool)を展開する必要があります。

以下はカスタムvnetに2つの可用性セットを配置するサンプルです。IPなど設定は適時変更する必要があります。
可用性セットを増やす場合はコピーして使うだけです。

展開後は下記のnode構成になります。

可用性セットを増やすことでLarge Scaleに対応します。

Load Balancerの展開

KubernetesではAzure Load Balancerの展開をサポートしています。
一部、オンラインドキュメントがないためソースを参考します。
https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/azure/azure_loadbalancer.go
以下はマニフェストのサンプルです。
Nginxを展開して各agentpoolにLBを展開しています。

複数のLBを作成する場合metadata内に下記のように可用性セットを指定する必要があります。

またInternal LBを利用する場合は

も追加する必要があります。

2つのLBが立ち上がったことを確認できます。
これで、複数の可用性セット、複数のLBでLargeScaleに対応することが可能です。
また、最終的にはDNSラウンドロビンなど利用して各LBへのアクセス手段を考える必要が出てきます。

まとめ

現状ではLBを利用したLargeScaleはこの方法はしかないような気がします。
そうそう、そこまで増やすことは少ないと思いますが・・・
今後AKSが上手い具合に対応してくることだろうと期待しましょう。
k8s 1.10 ではnode autoscaleも対応しているのでAKS対応してくることでしょう(期待)。

関連記事

  1. AWS

    Azureの機能を一覧にしてみました。

    最近、Azureの進化が止まらないので自分でも整理するために出力してみ…

  2. Azure

    Azure Monitor とBacklogを連携してアラートを課題登録する。

    はじめにBacklogでアラートを管理している場合に有効な方法です…

  3. Azure

    Azure Active Directoryを削除する。なんか消えないんすけど。

    はじめに今回はAzure Active Directory(以下A…

  4. Azure

    HDInsightのKafkaをJolokia(REST API)でモニタリングしてみる。

    はじめにくどうですHDInsightをモニタリングしたい場…

  5. Azure

    CacooでAzureのステンシル、テンプレートが使えるようになった。

    はじめにヌーラボさんのCacooですがAzureのステンシル、テン…

  6. Azure

    同サブスクリプションでVNET間接続を行う。ポータルでも設定できます。

    はじめにくどうです。VNET間接続、ポータルでもちゃんと設…

  1. Azure

    Azureポータルの地味なキーボードショートカット
  2. AWS

    意外と知られていないAWS認定試験の合格特典、模擬試験が無料で受けれます。
  3. Azure

    AzureでFreeBSD!Marketplaceから簡単に利用できるようになっ…
  4. Linux

    Hyper-v(だけじゃないけど)、ゲストとしてCentOSインストール時の解像…
  5. Azure

    Azure App Service に設置した WordPress から Azu…
PAGE TOP