Knative は、オープンソースの Kubernetes ベースのサーバーレスフレームワークです。 Knative は、アプリケーションのリソースリクエストに基づくポッドの自動スケーリング、バージョン管理、カナリアリリースをサポートしています。 トラフィックが処理されていない場合、ポッドの数はゼロにスケールされます。 Container Service for Kubernetes(ACK) Knative は、オープンソースの Knative および Kubernetes API と完全に互換性があります。 ACK Knative の機能は、複数の側面で強化されています。 たとえば、Knative はコールドスタート時間を短縮するためにインスタンスを保持し、Advanced Horizontal Pod Autoscaler(AHPA)コンポーネントに基づく予測スケーリング機能をサポートしています。
Kubernetes クラスターで Knative を使用する理由
Knative の概要
Knative は、オープンソースの Kubernetes ベースのサーバーレスフレームワークであり、サーバーレスアプリケーション向けのクラウドネイティブでクロスプラットフォームのオーケストレーション標準を提供します。 この標準を実装するために、Knative はコンテナの作成、ワークロード管理、イベントモデルを統合し、次の利点を提供します。
ビジネスロジックへの注力: Knative は、シンプルなアプリケーション構成と自動スケーリングを提供します。 これにより、開発者はビジネスロジックに集中できます。 これにより、O&M の負担が軽減され、基盤となるリソースへの注力が軽減されます。
標準化: ビジネスコードをサーバーレスプラットフォームにデプロイする場合、ソースコードのコンパイルとデプロイ、およびイベントの管理を考慮する必要があります。 現在、コミュニティやクラウドベンダーが提供するサーバーレスソリューションと FPGA as a Service(FaaS)ソリューションは、異なる標準を採用しています。 Knative は、標準的で汎用的なサーバーレスフレームワークを提供します。
たとえば、Knative でイベント駆動型モードを使用する場合、対応する YAML ファイルを変更し、クラウドサービスにバインドすることなくクラスターにデプロイできます。 これにより、クロスプラットフォームの移行が容易になります。
使いやすさ: Knative は、コードをコンテナイメージに自動的にパッケージ化し、イメージをサービスとして公開できます。 また、Knative は関数を Kubernetes クラスターに迅速にデプロイし、コンテナとして実行することもできます。
自動スケーリングとバージョン管理: Knative は、トラフィックが処理されていない場合、ポッドの数をゼロに自動的に減らすことができます。 これにより、リソースが節約されます。 また、Knative は、バージョン管理やカナリアリリースなどのさまざまな機能も提供します。
Knative Eventing: Knative は、外部イベントシステムとインターフェースし、イベントをサービスまたは関数にルーティングして処理するためのイベントモデルを提供します。
詳細については、「Knative Service の概要」をご参照ください。
主要コンポーネント
Knative は、さまざまな機能を提供する次のコアコンポーネントで構成されています。
Knative Serving: サーバーレスワークロード管理機能を提供します。 Knative Serving を使用すると、アプリケーションのサーバーレスデプロイ、バージョン管理、カナリアリリースが可能になります。 また、Knative Serving は、リソースリクエストに基づくポッドの自動スケーリングもサポートしています。 トラフィックが処理されない場合、ポッドの数はゼロにスケールされます。
Knative Eventing: イベント管理機能を提供します。これにより、外部イベントソースとのインターフェース、イベントの登録とサブスクライブ、イベントのフィルタリングを行うことができます。 イベントシステムは、イベントプロデューサーとイベントコンシューマーを切り離します。
Knative Functions: Knative サービスを効率的に作成、ビルド、デプロイできます。 Kubernetes、コンテナ、Knative などの基盤となる技術スタックを深く理解していなくても、Knative Functions を使用して、ステートレスなイベント駆動型関数を Knative サービスとして Kubernetes クラスターにデプロイできます。
ACK Knative を使用する理由
ACK Knative は、オープンソースの Knative および Kubernetes API と完全に互換性があります。 ACK Knative は、サービスとしての機能も強化し、より包括的なソリューションを提供します。
サービスとしての機能: 数回クリックするだけでアプリケーションをデプロイできます。 システムを構築するためにリソースを購入する必要はありません。 コンソールが提供され、視覚化された操作がサポートされているため、Kubernetes クラスターと Knative の使用が簡素化されます。
簡素化された O&M:
主要コンポーネントのホスティング: ACK クラスターでは、主要コンポーネントである Knative Serving と Knative Eventing は、ACK によって作成およびホストされます。 これにより、高可用性が確保され、リソース使用量に対して料金は発生しません。
ゲートウェイホスティング: ACK Knative は、Application Load Balancer(ALB)、Microservices Engine(MSE)、Service Mesh(ASM)、Kourier の 4 種類のゲートウェイを提供します。 Kourier を除き、クラウドサービスゲートウェイのコントローラーは ACK によって作成され、完全にホストされ、O&M 不要のゲートウェイサービスを提供します。 Kourier は、オープンソースバージョンと互換性があります。
エコシステム統合: Alibaba Cloud コンピューティングサービス(Elastic Container Instance および ECS)、可観測性(Simple Log Service および Managed Service for Prometheus)、アプリケーション統合(EventBridge)とシームレスに統合されています。 サーバーを購入したり、サービスを構築したりすることなく、Knative サービスを使用して、ロギング、モニタリング、アラート、継続的デリバリー、Eventing などの機能を実装できます。
その他の機能: オープンソースの Knative に基づいて、ACK Knative は、実際のビジネスシナリオに基づいてすぐに使える、より広範なソリューションを提供します。 次のセクションでは、ソリューションについて説明します。
リザーブドインスタンス: デフォルトでは、オープンソースの Knative は、オフピーク時にポッドの数をゼロにスケールしてコストを削減します。 ただし、次回アプリケーションを起動すると、アプリケーションのコールドスタートに時間がかかります。 コールドスタート時間を短縮するには、リザーブドインスタンス機能を使用して、低スペックのバースト可能インスタンスを予約することをお勧めします。 これにより、コストと起動時間のバランスをとることができます。
Knative 自動スケーリング: リクエストベースのKnative Pod Autoscaler(KPA)をすぐに使用できるだけでなく、HPAもサポートしています。 Knative サービスに対して AHPA を有効にすることができます。 アプリケーションのリソース需要が定期的に変動する場合は、AHPA を使用してリソース需要を予測することをお勧めします。 これにより、Knative に必要なリソースをプリロードして、コールドスタート時間を短縮できます。
ACK Knative とオープンソースの Knative の比較の詳細については、「Alibaba Cloud Knative とオープンソース Knative の比較」をご参照ください。
ユースケース
次の表に、ACK Knative のユースケースを示します。
シナリオ | 説明 |
Web サービスのホスティング |
|
サーバーレスアプリケーション |
|
AI シナリオ |
|
Knative Eventing シナリオ | Knative Eventing は、外部イベントシステムからイベントを取り込むプロセスを簡素化するイベントモデルを提供します。 たとえば、IoT(Internet of Things)デバイスがセンサーデータを Knative サービスに送信する場合、ACK Knative は対応するイベントソースを構成してデータを受信し、データストレージ、リアルタイム分析、モニタリング、アラートなど、対応する処理ロジックをトリガーできます。 |
手順
次の図は、ACK Knative の使用方法を示しています。
ステップ | 説明 |
前提条件 | Kubernetes 1.22 以後を実行する ACK マネージドクラスター が準備されています。 クラスターをアップグレードするには、「ACK クラスターを手動でアップグレードする」をご参照ください。 |
コンソールで ACK Knative をデプロイし、Knative Serving コンポーネントをインストールします。 詳細については、「Knative をデプロイおよび管理する」をご参照ください。 | |
インストールしてデプロイする Knative ゲートウェイを選択する。 ACK Knative は、ALB、MSE、ASM、Kourier ゲートウェイをサポートしています。
| |
サービスのデプロイと管理 | 使用中のリソースタイプを指定します。
|
自動スケーリング:
| |
バージョン管理とカナリアリリース:
| |
Knative サービスへのアクセス:
| |
高度な機能 | Knative Eventing: イベントソース、イベントの取り込みとサブスクリプション、イベントフィルタリングで構成される、サーバーレスのイベント駆動型モードのための包括的で体系的なアーキテクチャを提供します。 |
Knative Functions: Knative Functions は、Knative サービスを作成、ビルド、デプロイするための簡単な方法を提供します。 詳細については、「Knative Functions をデプロイする」をご参照ください。 | |
AI 推論サービス:
| |
サービスメッシュ: ASM を Knative サービスに統合して、複雑なトラフィック管理を実装し、サービスセキュリティを向上させます。 | |
可観測性とコスト管理 | ログ収集: Simple Log Service は、非侵入型のログ収集、消費、配信、クエリ、分析機能を有効にします。 詳細については、「Knative で SLS を有効にする」をご参照ください。 |
Knative ダッシュボード: Knative を Managed Service for Prometheus に接続して、応答レイテンシやリクエスト同時実行性などの統計を表示します。 詳細については、「Knative モニタリングダッシュボードを表示する」をご参照ください。 | |
モニタリングとアラート: Simple Log Service を使用して、収集されたログデータに基づいてアラートルールを構成します。 詳細については、「Knative サービスのアラートを構成する」をご参照ください。 | |
コスト分析: IT 企業の財務管理者は、Knative のコスト分析機能を有効にして、ACK クラスターのリソース使用量とコストの傾向を分析できます。 詳細については、「Knative サービスのコスト分析機能を有効にする」をご参照ください。 |
課金
ACK クラスターで ACK Knative を使用する場合、ACK Knative は無料です。 ただし、Knative を使用するときに作成されるクラウド リソースに対しては課金されます。 たとえば、ECS インスタンス、SLB インスタンス、NAT ゲートウェイを作成して使用する場合、リソースの課金ルールに基づいてリソースに対して課金されます。 ACK クラスターの課金ルールの詳細については、「課金概要」および「クラウド製品リソースの課金」をご参照ください。
FAQ
ACK Knative の使用中に問題が発生した場合は、まず Knative FAQ を参照し、ご自身でトラブルシューティングを行うことができます。
Knative について質問や提案がある場合は、DingTalk グループ 23302777 に参加してください。
参考資料
最新の機能とバグ修正を入手するには、できるだけ早く Knative Serving をアップデートしてください。 詳細については、「Knative リリースノート」および「Knative Serving をアップグレードする」をご参照ください。
Knative の公式ドキュメントでは、Knative を使用してオンラインストアアプリケーションを構築、デプロイ、監視する方法を説明したチュートリアルが提供されています。 詳細については、「Knative Bookstore チュートリアル」をご参照ください。