Azure Kubernetes Service を使用した運用環境レベルのワークロードのオーケストレーション

執筆者: Brian Redmond (Cloud Architect, Azure Global Black Belt Team)

このポストは、2018 年 7 月 26 日に投稿された Orchestrating production-grade workloads with Azure Kubernetes Service の翻訳です。

 

Kubernetes が 3 周年を迎えました! Kubernetes はリリースからわずか 3 年という短い期間で、コンテナー化されたワークロード向けのオーケストレーションの業界標準となりました。Azure ではこの 3 年にわたって、お客様が Kubernetes をクラウドで実行できるよう支援してきました。Kubernetes を使用するとオーケストレーションのタスクを大幅に簡素化できますが、Kubernetes を最大限に活用するためにはさまざまな設定と管理が必要になります。それに役立つのが、Azure Kubernetes Service (AKS) です。企業が求める要件に対するマイクロソフトならではの知識と、開発者の皆様を支援してきたこれまでの実績を活かして複雑なさまざまな問題に対処し、クラウドで最も優れた Kubernetes エクスペリエンスを提供するマネージド サービスです。

このブログでは、Azure のお客様が Azure Kubernetes Service を利用して実現した優れたシナリオをいくつかご紹介します。それが終わったら、一緒に Kubernetes の 3 周年をお祝いしましょう。

AKS を初めて利用する場合は、Azure Kubernetes Service のページこちらの動画 (英語) で詳細をご確認ください。

コンテナーへのリフト & シフト

企業のお客様の多くは、クラウドにすばやく移行したいと考えているため、最初からクラウド ネイティブ機能を最大限に活用するためにアプリを再作成する、ということができないケースが少なくありません。アプリをコンテナー化すれば、より簡単にアプリを刷新してクラウドにスムーズに移行できるほか、CI/CD の自動化、オートスケール、セキュリティ、監視などのメリットを追加することができます。また、Azure Cosmos DB や Azure の PostgreSQL マネージド サービスといった Azure の PaaS ベースのデータベースを活用して、データ レイヤーの管理を簡素化することもできます。

たとえば、ある製造業のお客様は、多数のレガシ Java アプリが高コストのデータセンター全体に分散していました。これらのアプリを拡張し、顧客のニーズに対応させることはほぼできず、更新は煩雑で信頼性にも欠けました。しかし、Azure Kubernetes Service とコンテナーを使用することで、これらのアプリの多くを単一のマネージド サービスでホストできるようになりました。その結果、信頼性が大幅に向上し、新機能を以前よりもはるかに高い頻度でリリースできるようになりました。

以下の図は、AKS を使用した一般的なリフト & シフトのアプローチを視覚的に示したものです。AKS の利用を開始するには、こちらのチュートリアルをご確認ください。

Lift and shift to containers

マイクロサービス ベースのクラウド ネイティブ アプリ

マイクロサービスは多くのアプリに強力な機能を提供するもので、以下のようなメリットが含まれています。

  • 独立したデプロイメント
  • サービスごとのスケーラビリティおよびリソース使用率の向上
  • 開発に集中できる小規模なチーム
  • ビジネス機能に焦点を当てたコード

コンテナーは、マイクロサービス ベースのアプリを実現するのに適したテクノロジです。Kubernetes は、企業のお客様がこれらの分散マイクロサービス アプリを大規模に管理するために欠かせないオーケストレーション レイヤーを提供します。

Azure 独自のメリットとして、開発者用ツールとのネイティブ統合や、Kubernetes エコシステムから提供される優れたツールやサービスに接続できる柔軟性が挙げられます。包括的でシンプルなエンドツーエンドのエクスペリエンスにより、Azure で Kubernetes のライフサイクルをシームレスに管理できます。マイクロサービスでは多様な言語、プロセス、ツールがサポートされるため、開発者と運用部門の生産性を重視する Azure は、Siemens (英語)Varian (英語)Tryg (英語) をはじめとするさまざまな企業で採用されており、マイクロサービスを大規模に実行するために AKS が使用されています。また、AKS を実行しているお客様にとって、以下のような機能もマイクロサービス ベース アプリの開発、デプロイ、管理に役立っています。

  • Azure Dev Spaces。AKS クラスターをターゲットとするマイクロサービスの反復的な開発、テスト、デバッグの実行をサポート。
  • HTTP アプリケーション ルーティング。サービスへの外部アクセスを自動化。
  • Virtual Kubelet 実装の ACI Connector。Azure Container Instances によるサービスの高速スケーリングが可能に。
  • Azure DevOps Projects および Helm、Draft、Brigade などのオープンソース ツールを使用して CI/CD を簡素化。すべて Azure Container Registry の安全なプライベート Docker リポジトリで実行。
  • Istio (英語)Linkerd (英語) などのサービス メッシュ ソリューションのサポートにより、複雑なネットワーク ルーティング、ログ、TLS セキュリティ、分散アプリへの分散トレーシングを簡単に追加。

以下の図は、上記の要素の一部を全体的なシナリオに当てはめたものです。

Microservices based cloud native applications

AKS を使用したマイクロサービスの開発の概要については、こちらのブログ記事 (英語) をご覧ください。AKS を使用して実際にマイクロサービスを構築したい方は、こちらの全 4 回のブログ チュートリアル (英語) をご覧ください。包括的な手順について説明しています。

IoT Edge のデプロイメント

SmartCity、ConnectedCar、ConnectedHealth などの IoT ソリューションによって、何十億ものデバイスをクラウドと接続する多様なアプリが誕生しています。これらの IoT デバイスは、コンピューティング能力の進歩に伴いますます強力になると考えられます。しかし、IoT アプリ開発にも当然課題があります。たとえば、堅牢な IoT ソリューションの作成、保守、更新には時間がかかるほか、分散環境で包括的なセキュリティを維持するためには、さらに高度な課題に対処しなければなりません。そこに、既存のインフラストラクチャとのデバイスの非互換性やスケーリングの問題まで加わると、IoT ソリューションの開発はいっそう難しくなります。

Azure は、こうした IoT の課題を解決する強力な機能セットを提供します。特に Azure IoT Edge は、エッジ デバイスでカスタムのビジネス ロジックとクラウド分析を実行できるように構築されているため、お客様はデータ管理ではなく、ビジネス インサイトに集中できるようになります。

Azure のお客様は AKS の機能を活用して、この IoT Edge レイヤーの管理にコンテナーやオーケストレーションを利用しています。AKS を Virtual Kubelet 実装の IoT Edge Connector (英語) と組み合わせることで、以下を実現できます。

  • クラウドとエッジでソフトウェア構成の一貫性を確保
  • 複数の IoT Hub に同一のデプロイメントを適用

AKS と IoT Edge Connector を使用すると、構成を Kubernetes マニフェストで定義してから、単一のコマンドを使用して、エッジのすべての IoT デバイスに簡単かつ確実にデプロイすることができます。このように単一のマニフェストで簡単にすべての IoT Hub を管理できるため、お客様が IoT アプリを大規模に提供、管理するうえでも便利です。たとえば、複数のリージョンにデバイスをデプロイして管理する場合の課題を考えてみてください。AKS、IoT Hub、IoT Edge Connector を併用することで、これらのデプロイメントが簡単になります。以下の図は、この AKS と IoT Edge Connector を使用した IoT シナリオを示したものです。

IoT Edge deployment

Kubernetes を使用して IoT Edge のデプロイメントを管理する方法の詳細については、こちらのブログ記事 (英語) をご覧ください。

大規模な機械学習

機械学習は非常に強力な機能ですが、使用は簡単ではありません。機械学習を使用するには、多くの場合、モデルのトレーニングとホストが必要になります。そのためには、さまざまな環境で動作しさまざまな規模でデプロイできるように、データ サイエンティストがコードを複製する必要があります。また、運用環境の大規模なクラスターでモデルを実行し始めたとたん、ライフサイクル管理はさらに難しくなります。構成とデプロイメントはデータ サイエンティストに任せられることが多く、結果的に彼らの時間はデータ サイエンスではなく、インフラストラクチャのセットアップに費やされることになります。

AKS を使用すれば、ML モデルのトレーニングやホスト、ライフサイクル管理のワークフローに関連するこうした課題を解決することができます。

  • トレーニングに AKS を使用すると、コンピューティング負荷の高い大規模なワークロード向けに設計された GPU リソースをオンデマンドで利用でき、必要ないときはスケールダウンすることができます。これは、複数のデータ サイエンティストが複数のプロジェクトに取り組んでいて、それぞれ別々のスケジュールでリソースを必要とするような場合に適しています。また、分散トレーニングやハイパーパラメーターの最適化といった戦略によって、トレーニング サイクルを短縮することもできます。
  • ホスティングに AKS を使用すると、機械学習モデルに DevOps 機能を追加できます。これらのモデルはローリング アップグレード機能を使用して簡単にアップグレードできるほか、Blue/Green デプロイメントやカナリア デプロイメントなどの戦略を簡単に適用することができます。
  • コンテナーを使用することで、テスト環境、開発環境、運用環境の一貫性も大幅に向上します。また、自己復旧機能により、実行の信頼性が大幅に向上します。

以下の図は、機械学習モデルに AKS を使用したシナリオの例です。

ML scenario - updated

機械学習などのコンピューティング負荷の高い大規模なワークロード向けに設計された GPU 対応 VM で AKS を実行する方法については、こちらのページをご覧ください。

次のステップ

上記のシナリオを実装するために、現在 AKS を使用している、あるいは使用を検討中ですか? また、AKS が課題の解決に役立つ別のシナリオをご存知ですか? ユース ケースに関する情報共有やディスカッションには、こちらのページ (英語) をご利用ください。

また、Azure Kubernetes Service の概要を理解できる簡単なデモ (英語) も用意しています。さらに、Azure でのエンドツーエンドの Kubernetes 開発エクスペリエンスを紹介する Web セミナーも予定しています。こちらのページ (英語) からお申し込みください。