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対応してくることでしょう(期待)。

Related post

  1. Azure

    AzureでFreeBSD!Marketplaceから簡単に利用できるようになった。

    はじめにくどうですあなたはFreeBSDユーザーですか?…

  2. Azure

    Azureでは仮想マシンのパスワードをポータルからリセットできます。

    はじめにくどうです。Azureで、仮想マシンのパスワードを…

  3. Azure

    specializedイメージをもとに仮想マシンを立ち上げるのに便利なテンプレート。

    はじめにくどうです。便利なテンプレートの紹介です。AR…

  4. Azure

    AzureでNAT設置パターンを考える。構築編、これでルートテーブルも大丈夫かもよ。

    はじめにくどうです。前回の投稿では概要だけ説明しました。Azur…

  5. Azure

    Serverless Meetup Sapporoで話てきた。

    はじめにくどうです先日12/11に札幌でServerles…

  6. AWS

    超メモ:cloud-initでgrowpartを利用する場合の注意

    はじめにくどうです。超メモです。これは、ハマリました。だってc…

  1. Azure

    Azure Functions を起動した(だけ)。だけど、これは面白そうだ。
  2. Azure

    Cognitive ServicesでVideo APIを使ってみる。APIひと…
  3. Azure

    SCOMで監視できるAzure(リソースマネージャ側)のサービス
  4. Kubernetes

    fluentd-kubernetes-daemonset のパラメーターについて…
  5. Azure

    Azureのアラートって簡単にPagerDutyと連携できるんです。そっからSl…
PAGE TOP