Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ぼうけんにでかけよう Kubernetes KEDA

438 views

Published on

ServerlessDays Fukuoka 2019
2019/12/14

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ぼうけんにでかけよう Kubernetes KEDA

  1. 1. ぼうけんにでかけよう Kubernetes KEDA 2019-12-14 Tsukasa Kato
  2. 2. Profile • Tsukasa Kato / 加藤 司 • 株式会社オルターブース テクニカルアーキテクト • Microsoft MVP for Microsoft Azure • https://tsukatoh.hatenablog.com/ • https://www.slideshare.net/tsukasakatou9
  3. 3. Agenda • Kubernetes • Kubernetes-based Serverless • KEDA 上記を用いたFaaSを知っていただく
  4. 4. Kubernetes
  5. 5. Kubernetes • コンテナーアプリケーションを管理するためのオーケスト レーションツール • 自動デプロイ、スケーリング、アプリ・コンテナーの運用 自動化 • Webコンソールが用意されており、GUIでの管理が可能 • Google が社内のオーケストレーションツール「Borg」を 元に開発 • CNCFに寄贈され管理されておりオープンソースで提供さ れている • マイクロサービスを構築する基盤として採用される事が多 い
  6. 6. Kubernetes Architecture
  7. 7. でもKubernetesって構築が面倒…
  8. 8. Kubernetes managed services Google Kubernetes Engine Azure Kubernetes Service Amazon Elastic Container Service for Kubernetes IBM Cloud Kubernetes Service Alibaba Cloud Container Service for Kubernetes Rancher NetApp Kubernetes Service
  9. 9. そうは言ってもマスターノードだけが マネージドでしょ?
  10. 10. Cluster Autoscaler • 追加容量が必要になった場合は新しいノードが自動的に追 加され、不要になれば削除される • 実行するワークロードの量に基づいてクラスタのサイズを 自動的に変更 • リソース制約のためにノードでスケジュールできないPod を監視 • ノードプール単位で機能 • Horizontal Pod Autoscaler(HPA)と連携して機能してノー ドとポッドの管理を行う
  11. 11. Horizontal Pod Autoscaler(HPA) • Kubernetes クラスターのメトリック サーバーを使用して、 Podのリソースの需要をモニターし、 アプリケーションで 必要なリソースが増えるとその需要を満たすためにレプリ ケーションコントローラー、デプロイ、レプリカセット内 のポッドの数を自動的にスケーリング • また、リソースが不要になったときにスケールインできる • Kubernetes 標準APIオブジェクトとコントローラとして実 装されている
  12. 12. Kubernetes-based Serverless
  13. 13. Knative KEDA Virtual Kubelet Kubernetes-based Serverless
  14. 14. Knative • Serverless ワークロードをビルド、デプロイ、管理機能を提 供するKubernetesベースのプラットフォーム • Scale-to-zero、自動 スケーリング、クラ スタ内ビルド、 Kubernetes 上のク ラウド ネイティブ アプリケーション用 のイベント フレーム ワークなどの機能が ある https://github.com/knative
  15. 15. Knative Components Serving •スケール •カナリアリース •ルーティング •リクエスト受信 Building •コンテナのビルド •パッケージング Eventing •イベントソースの抽 象化 •コードの発火
  16. 16. Virtual Kubelet • Kubeletの仮想実装で、汎用的にk8sクラスタから外部リソー スを利用できる • バースティングなど を目的として利用す るのがベター • Microsoftが始めた OSSプロジェクトで、 現在はCNCFによっ て管理されている https://github.com/virtual-kubelet/virtual-kubelet
  17. 17. Virtual Kubelet Alibaba Cloud ECI Provider Azure Container Instances Provider Azure Batch GPU Provider AWS Fargate Provider HashiCorp Nomad OpenStack Zun
  18. 18. Serverless Container Serverless Containers = Nodeless Containers VM、クラスタ (ノード)が不要 コンピュート課金 オンデマンド実行 可能 AWS FargateAzureContainer Instances Alibaba Elastic Container Instance
  19. 19. KEDA
  20. 20. KEDA (Kubernetes-based Event Driven Autoscaling Component) K8sでイベント駆動型の Podレベルオートスケールを可能にするフレームワーク • Red HatとMicrosoftのエンジニアリングチームのコラボ レーションの結果として開始されたプロジェクト • Kubernetesクラスターにインストールしてイベントベース のコンテナースケーリングを有効にすることができるオープ ンソースコンポーネントとして定義される • CPUメトリックスとメモリを活用してコンテナをゼロからス ケーリングし、Kubernetes機能を拡張する
  21. 21. KEDAの特徴 イベント ドリブン オート スケーリング ビルトイン スケーラー 複数のワーク ロードタイプ 非ベンダー依存 Azure Functions サポート
  22. 22. Architecture • Scaler:選択したソースに接続 して、メトリックを読み取る • Metrics adapter:Scalerに よって読み取られたメトリック をHorizontal Pod Autoscaler に転送して、アプリの自動ス ケーリングを有効にする • Controller:0⇔1のスケーリン グを提供する https://keda.sh/concepts/overview/#how-keda-works
  23. 23. KEDA • Kubernetesのスケーリング「Horizontal pod autoscaler (HPA)」はPodのCPUやメモリ消費量で調整される • KEDAは非HTTPなイベントに連動してクラスターへのデプロ イを自動スケールできる • HPAなどのKubernetesコンポーネントとネイティブに統合 され、クラウドとエッジの両方で実行できる • KEDAがZero Scale in/outを行い、他はHPAがScale in/out する • 様々なスケーラーが用意されており、今後も追加予定 • MIT Licenseで提供され、CNCFへの登録も進められている
  24. 24. Scalers
  25. 25. Scalers • Apache Kafka Topic • AWS Cloudwatch • AWS SQS Queue • Azure Event Hubs • Azure Service Bus • Azure Storage Queue • External • Google Cloud Platform Pub/Sub • Huawei Cloudeye • Liiklus Topic • NATS Streaming • Prometheus • RabbitMQ Queue • Redis Lists
  26. 26. KEDAを使用するには 以下の方法でデプロイすることで利用可能 • HelmでKEDAをデプロイ →通常はこちら • Kubectlでyamlからのデプロイ →minikubeなどHelmを使わない場合はこちら
  27. 27. HelmでKEDAをデプロイ 1. Helm repoを追加 2. Helm repoをアップデート 3. KEDAのHelm chartをインストール $ helm repo add kedacore https://kedacore.github.io/charts $ helm repo update $ helm install kedacore/keda --namespace keda --name keda $ kubectl create namespace keda $ helm install keda kedacore/keda --namespace keda Helm 2.x Helm 3.x
  28. 28. Kubectlでyamlからのデプロイ 1. Githubからサンプルをダウンロードしてインストール https://github.com/kedacore/keda $ kubectl create namespace keda $ kubectl apply -f deploy/crds/keda.k8s.io_scaledobjects_crd.yaml $ kubectl apply -f deploy/crds/keda.k8s.io_triggerauthentications_crd.yaml $ kubectl apply -f deploy/
  29. 29. KEDAをデプロイ • keda-operator podが追加される
  30. 30. Azure Functions Core Toolsのインストール • Azure Functions Core Toolsをインストールすることで Kubernetes上でAzure Functionsが利用可能となる • 以前はスケールも自分での実装が必要だったが、KEDAを使 うことでスケールの実装が不要となった • インストールするには以下のコマンドを投入する ※要作業端末へのAzure Functions Core Toolsインストール $ func kubernetes install --namespace keda
  31. 31. Azure Functions Core Toolsをデプロイ • kedaとosiris関連の podが追加される
  32. 32. DEMO
  33. 33. DEMO Architecture Azure Kubernetes Service Azure Storage Queue
  34. 34. まとめ • KEDAはKubernetesの上で実行できるFaaS • 各クラウドはもちろんオンプレミスでも実行が可能 • Virtual Kubelet + KEDAはバースティングな状況には向いて いる • KEDAはまだまだ発展途上のプロダクトなので今後に期待 • Serverlessの仕様が標準化され、ベンダーを意識しない世界 が来てほしい
  35. 35. ご清聴ありがとうございました

×