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 Sphere MT3620 始めました。サンプルアプリがとりあえず動くまで編。

    はじめにMicrosoftがセキュリティ確保を目的に発表したIoT…

  2. Azure

    FortiGate NGFW VMをマーケットプレイスから立ち上げてみた。

    はじめにくどうですオンプレを扱っていた時に慣れ浸しんだ、F…

  3. Azure

    ACS Engineを利用してAzure上にkubernetesをdeploy!

    はじめにくどうです。今回はAzureでのACS Engin…

  4. Azure

    AzureにKubernetesを展開する5つの方法

    はじめにくどうです。今回は、AzureにKubernete…

  5. Azure

    Azure RemoteAppを使ってみる。Officeが使えますよ!

    はじめにくどうです。事務所はちょっと寒いです。RemoteAppの…

  1. Azure

    ACS Engineを利用してAzure上にkubernetesをdeploy!…
  2. 未分類

    バックアップを取りましょ その2 (SystemRescueCDでバックアップ)…
  3. 未分類

    LPIC Level3を受験しよう
  4. Azure

    Cognitive ServicesでVideo APIを使ってみる。APIひと…
  5. 未分類

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