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. Azure

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

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

  2. AWS

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

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

  3. Azure

    Application Gateway web application firewall が公開され…

    はじめにくどうです。Igniteが盛り上がってますねh…

  4. Azure

    Scale SetをAnsibleで構成管理してみる。でもHTTPで公開できない?

    はじめにくどうです。Scale Setはこれまでの、ロード…

  5. Azure

    Channel9で公開されてた。第1回 Tokyo Jazug Night!

    Tokyo Jazug Nightくどうです。第1回 …

  6. Azure

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

    はじめにくどうです。Azure Functions が出ま…

  1. Azure

    VNET間接続でもデイジーチェーン(数珠つなぎ)で通信できます。そうサイト対サイ…
  2. TED

    TEDxSapporo Salon Vol.5 に参加してきました。
  3. 未分類

    RHEL5とRHEL4ESのベンチマーク
  4. 未分類

    「Virtual Server 2005 R2」にFedora 5 をインストー…
  5. AWS

    homebrew でクラウド各社のcliをインストールする方法
PAGE TOP