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 App Service EnvironmentにWordPressを展開する方法

    はじめにAzure App Service Environment…

  2. Azure

    Deep Security User Night #3 に参加してきました。

    はじめにくどうですDeep Security User N…

  3. Azure

    Azure Application Gateway で Let’s Encrypt も使えます。Le…

    はじめにくどうです4/12にLet’s EncryptがG…

  4. Azure

    Azureの公式ドキュメントを更新しよう!だれでも更新できるんですよ。

    はじめにくどうです。Azureのドキュメントはみなさん活用している…

  5. Azure

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

    はじめにくどうです。SCOMで監視できるAzureのサービスSC…

  1. Azure

    Azure PowerShell のインストールで注意すること。あれ? Azur…
  2. 未分類

    オープンソースカンファレンス 2008 Hokkaido
  3. Linux

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

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

    さっぽろ雪まつりで行っている実証実験のまとめ!
PAGE TOP