すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:Knative概要

最終更新日:Nov 14, 2024

Knativeは、オープンソースのKubernetesベースのサーバーレスフレームワークです。 Knativeは、アプリケーションのリソース要求、バージョン管理、およびカナリアリリースに基づくポッドの自動スケーリングをサポートしています。 トラフィックが処理されない場合、ポッドの数はゼロにスケーリングされます。 Container Service for Kubernetes (ACK) Knativeは、オープンソースのKnativeおよびKubernetes APIと完全に互換性があります。 ACK Knativeの能力は、多次元で強化される。 たとえば、Knativeはコールドスタート時間を短縮するためにインスタンスを保持し、Advanced Horizontal Pod Autoscaler (AHPA) コンポーネントに基づく予測スケーリング機能をサポートします。

KubernetesクラスターでKnativeを使用する理由?

Introduction to Knative

Knativeは、オープンソースのKubernetesベースのサーバーレスフレームワークで、サーバーレスアプリケーション用のクラウドネイティブおよびクロスプラットフォームのオーケストレーション標準を提供します。 Knativeは、標準を実装するために、コンテナ作成、ワークロード管理、およびイベントモデルを統合します。 次のセクションでは、Knativeの利点について説明します。

  • ビジネスロジックへの重点: Knativeは、シンプルなアプリケーション構成と自動スケーリングを提供します。 これにより、開発者はビジネスロジックに集中できます。 これにより、O&Mの負担が軽減され、基礎となるリソースへの集中が減少します。

  • 標準化: ビジネスコードをサーバーレスプラットフォームに展開する場合、ソースコードのコンパイルと展開、およびイベントの管理を考慮する必要があります。 現在、コミュニティとクラウドベンダーが提供するサーバーレスソリューションとFPGA as a Service (FaaS) ソリューションの標準は異なります。 Knativeは、標準および汎用のサーバーレスフレームワークを提供します。

    たとえば、Knativeでイベント駆動モードを使用する場合は、対応するYAMLファイルを変更し、クラウドサービスにファイルをバインドする必要なく、クラスターにファイルをデプロイできます。 これにより、クロスプラットフォーム移行が容易になります。

  • 使いやすさ: Knativeは、コードをコンテナイメージに自動的にパッケージ化し、イメージをサービスとして公開できます。 Knativeは、関数をKubernetesクラスターにすばやくデプロイし、コンテナーとして実行することもできます。

  • 自動アプリケーション管理: Knativeは、トラフィックが処理されない場合、ポッドの数を自動的にゼロに減らすことができます。 これによりリソースが節約されます。 Knativeは、バージョン管理やカナリアリリースなどのさまざまな機能も提供しています。

  • Knative Eventing: Knativeは、外部イベントシステムとのインターフェースにイベントモデルを提供し、処理のためにイベントをサービスまたは関数にルーティングします。

主要コンポーネント

Knativeは、さまざまな機能を提供する次のコアコンポーネントで構成されています。

  • Knative Serving: サーバーレスのワークロード管理機能を提供します。 Knative Servingは、アプリケーションのサーバーレス展開、バージョン管理、カナリアリリースを可能にします。 Knative Servingは、リソース要求に基づくポッドの自動スケーリングもサポートしています。 トラフィックが処理されない場合、ポッドの数はゼロにスケーリングされます。

  • Knative Eventing: イベント管理機能を提供します。これにより、外部イベントソースとのインターフェイス、イベントの登録とサブスクライブ、イベントのフィルタリングが可能になります。 イベントシステムは、イベントプロデューサーとイベントコンシューマーを分離します。

  • Knative Functions: Knativeサービスを効率的に作成、ビルド、デプロイできます。 Kubernetes、コンテナー、Knativeなどの基盤となるテクノロジースタックを深く理解する必要なく、Knative functionsを使用して、ステートレスのイベント駆動型関数をKnativeサービスとしてKubernetesクラスターにデプロイできます。

機能

KubernetesクラスターでKnativeを使用すると、次の機能を簡単に実装できます。

リクエストベースの自動スケーリング

CPUおよびメモリ要求に基づく自動スケーリングは、ビジネスの実際のリソース使用量を反映しない場合があります。 webサービスの場合、1秒あたりのクエリ (QPS) または1秒あたりのリクエスト (RPS) に基づく自動スケーリングは、サービスのパフォーマンスを直接反映できます。 Knative Servingは、キュープロキシコンテナーを各ポッドに挿入して、コンテナーの同時実行性またはRPSメトリックを収集します。 オートスケーラーがスケジュールどおりにメトリックを収集した後、オートスケーラーは対応するアルゴリズムに基づいてデプロイのポッド数を自動的に調整します。 これにより、リクエストに基づく自動スケーリングが可能になります。

Knativeを使用せずにACKクラスターで同じ目標を達成するには、デプロイメントとサービスを作成し、Ingressゲートウェイを設定してから、水平ポッドオートスケーラー (HPA) パラメーターを設定する必要があります。 Knativeサービスを使用する場合は、Knativeをデプロイし、KnativeサービスのYAMLファイルを設定するだけで済みます。

トラフィックが処理されない場合のポッド数をゼロにスケーリング

Knativeは、アプリケーションからリクエストが受信されないときにポッドの数を自動的にゼロに減らし、リクエストが受信されたときにポッドを自動的にスケールアウトできます。 Knativeは、Proxy (プロキシモード) とServe (ダイレクトモード) の2つのアクセスモードを定義しています。 オートスケーラは、モードの切り替えを担当します。 要求の数がゼロである場合、オートスケーラは、サービスモードからプロキシモードに切り替わる。 要求が受信されると、オートスケーラは、ポッドの数をスケールアウトする通知を受信する。 新しいポッドのステータスが準備完了に変更されると、自動スケーラーはリクエストを転送します。 次に、オートスケーラはプロキシモードからサーブモードに切り替わります。

バージョン管理とカナリアリリース

Knativeサービスを作成すると、ConfigurationオブジェクトとRouteオブジェクトが基になるレイヤーに自動的に作成されます。

  • 設定: 現在の望ましい状態の設定。 Configurationオブジェクトは、サービスが更新されるたびに更新されます。 Configurationオブジェクトが更新されると、一意のリビジョンが作成されます。 リビジョンは、Configurationオブジェクトのバージョン管理メカニズムです。

  • ルート: リクエストをリビジョンにルーティングし、異なる比率のトラフィックを異なるリビジョンに転送します。

上記の機能を使用して、リビジョンを使用して、以前のバージョンにアプリケーションをロールバックするなど、バージョンを管理できます。 トラフィック管理のためにカナリアリリースを実行することもできます。 たとえば、リビジョンV1を作成した後、バージョンを更新する必要があるときに、サービスのConfigurationオブジェクトを更新できます。 次に、Revision V2を作成し、ルートを使用してRevision V1とRevision V2に異なるトラフィック比率を指定できます。 トラフィックは、所定の比率に基づいて分配される。 たとえば、70% トラフィックをリビジョンV1にルーティングし、30% トラフィックをリビジョンV2にルーティングできます。

image

Knative Eventing

Knative Eventingは、GitHubやMessage Queue (MQ) などの外部イベントシステムとのインターフェイスに使用できるイベントモデルを提供し、処理のためにイベントをKnative Servicesまたは関数にルーティングします。

なぜ使用ACK Knative?

ACK Knativeは、オープンソースのKnativeおよびKubernetes APIと完全に互換性があります。 ACK Knativeは、サービスとしての機能も強化し、より包括的なソリューションを提供します。

image
  • サービスとしての機能: 数回クリックするだけでアプリケーションをデプロイできます。 システムを構築するためにリソースを購入する必要はありません。 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を除く、完全にホストされたO&Mフリーのゲートウェイサービスを提供するためにACKによって作成されます。 Kourierはオープンソースバージョンと互換性があります。

  • エコシステム統合: Alibaba Cloudコンピューティングサービス (Elastic Container InstanceECS) 、可観測性 (Simple Log Service (SLS)Managed Service for Prometheus) をシームレスに統合アプリケーション統合 (EventBridge) 、およびメッセージ製品 (Simple message Queue (以前のMNS) (SMQ)) 。 Knative Servicesを使用すると、サーバーを購入したり、サービスを構築したりすることなく、ロギング、モニタリング、アラート、継続的配信、イベントなどの機能を実装できます。

  • その他の機能: オープンソースのKnativeに基づいて、ACK Knativeは、実際のビジネスシナリオに基づいて、すぐに使えるより広範なソリューションを提供します。 以下のセクションでは、解決策について説明する。

    • リザーブドインスタンス: デフォルトでは、オープンソースのKnativeは、コストを削減するために、オフピーク時にポッド数をゼロにスケーリングします。 ただし、次回アプリケーションを起動すると、アプリケーションは時間のかかるコールドスタートを経験します。 コールドスタート時間を短縮するために、リザーブドインスタンス機能を使用して、低仕様のバースト可能インスタンスを予約することを推奨します。 これにより、コストと起動期間のバランスを取ることができます。

    • Knative自動スケーリング: HPAおよびKnative Pod Autoscaler (KPA) が提供する既成の機能に加えて、KnativeサービスのAHPAを有効にできます。 アプリケーションのリソース需要が定期的に変動する場合は、AHPAを使用してリソース需要を予測することを推奨します。 これにより、コールドスタート時間を短縮するためにKnativeが必要とするリソースをプリロードできます。

ACK KnativeとオープンソースKnativeの比較の詳細については、「Alibaba Cloud KnativeとオープンソースKnativeの比較」をご参照ください。

適用シナリオ

次の表に、ACK Knativeの使用シナリオを示します。

シナリオ

説明

webサービスのホスティング

  • 簡素化されたデプロイ: ACK Knativeは、Kubernetesの基礎となる詳細をカプセル化し、Knative Servicesを使用してワークロードのデプロイと管理を大幅に簡素化します。

  • 簡略化されたマルチバージョン管理: リビジョンメカニズムは、各リビジョンが一意の識別子を持つことを保証します。これにより、バージョンのロールバックなど、さまざまなバージョンの管理が容易になります。

  • トラフィック管理用の簡易カナリアリリース: ACK Knativeはトラフィック管理機能を提供します。 異なるリビジョンのサービスに対して異なるトラフィック比率を設定して、カナリアリリースとA/Bテストを迅速に実行できます。

サーバーレスアプリケーション

  • ビジネスロジックに重点を置く: 開発者は、IaaS (infrastructure as a service) リソースではなく、ビジネスロジックの開発に重点を置くことができます。 アプリケーション構成も単純化されています。 これにより、基盤となるインフラストラクチャのO&Mコストが削減されます。

  • オンデマンドのリソース使用量と自動スケーリング: ACK Knativeは、リクエストと同時実行性に基づいてリソースを自動的にスケールアウトし、ビジネストラフィックが処理されない場合はポッド数をゼロに減らします。 これにより、リソースとコストが節約されます。

AIシナリオ

  • ビジネスロジックに重点を置く: GPUアクセラレーションなどの異種コンピューティングシナリオでは、開発者は基盤となるインフラストラクチャのメンテナンスではなく、AIジョブの開発と展開に重点を置くことができます。

  • オンデマンドのリソース使用量と自動スケーリング: ACK Knativeは、実際のワークロードに基づいてリソースを自動的にスケールアウトできます。 ワークロードが変動する推論サービスのリソース使用コストが大幅に削減されます。

  • 移植性: ACK KnativeはKubernetes互換環境で実行できます。 Knativeサービスは、オンクラウドノード、データセンター、またはエッジデバイスにもデプロイできます。

Knative Eventingシナリオ

Knative Eventingは、外部イベントシステムからイベントを取り込むプロセスを簡素化するイベントモデルを提供します。 たとえば、モノのインターネット (IoT) デバイスがセンサーデータをKnativeサービスに送信すると、ACK Knativeは対応するイベントソースを設定してデータを受信し、データストレージ、リアルタイム分析、モニタリング、アラートなどの対応する処理ロジックをトリガーできます。

ACK Knative How to use

次の図は、ACK Knativeの使用方法を示しています。

image

ステップ

説明

前提条件

ACK管理クラスターが作成されました。 詳細については、「ACK管理クラスターの作成」をご参照ください。 クラスターのKubernetesバージョンは1.22以降である必要があります。 クラスターを更新する方法の詳細については、「手動でACKクラスターをアップグレードする」をご参照ください。

コンソールにACK Knativeをデプロイし、Knative Servingコンポーネントをインストールします。 詳細については、「Knativeのデプロイ」をご参照ください。

インストールするKnativeゲートウェイを選択し、ゲートウェイをデプロイします。 ACK Knativeは、ALB、MSE、ASM、およびKourierゲートウェイをサポートします。 詳細については、「KnativeのIngressの選択」をご参照ください。

  • ALB Ingress: ALB Ingressは、トラフィック管理のためにAlibaba CloudのALBサービスによって強化された、完全マネージド型のO&MフリーIngressです。 ALB Ingressは、自動スケーリング機能も提供します。

  • MSE Ingress: MSE Ingressは、Kubernetes Ingress標準に準拠した次世代のIngressです。 MSE Ingressは、従来のトラフィックゲートウェイのすべての機能をサポートします。

  • ASM Ingress: ASMは、マイクロサービスアプリケーションのトラフィックを一元管理できるIstio互換プラットフォームです。 ASM Ingressは、トラフィック制御、メッシュ可観測性、安全なサービス間通信などの機能を提供して、サービスガバナンスを簡素化し、異種コンピューティングインフラストラクチャ上で実行されるサービスの管理を支援します。

  • Kourier Ingress: Kourier Ingressは、Envoyアーキテクチャに基づいて開発された軽量のIngressです。

サービスの展開と管理

使用するリソースタイプを指定します。

  • デフォルトでは、ECSリソースはKnativeサービスの実行に使用されます。

  • エラスティックコンテナインスタンスによって提供されるポッドリソースを使用して、トラフィックバーストを処理します。 詳細については、「Knativeでのエラスティックコンテナインスタンスの使用」をご参照ください。

  • AI推論などのシナリオでGPUリソースを使用します。 詳細については、「KnativeでのGPUの使用」をご参照ください。

  • ECSインスタンスとエラスティックコンテナインスタンスがクラスター内にコロケートされている場合、ResourcePolicyを使用して、スケールアウトアクティビティのインスタンスの優先順位を指定できます。 詳細については、「KnativeのECSインスタンスとelastic containerインスタンスのColocate」をご参照ください。

  • プリエンプティブルインスタンスを使用するようにKnative Serviceを設定できます。これにより、クラウドコンピューティングリソースの使用量が削減されます。 詳細については、「プリエンプティブルインスタンスでのKnativeの使用」をご参照ください。

  • コストと起動期間のバランスを取るために、低仕様のバースト可能インスタンスを予約するようにリザーブドインスタンスを設定します。 詳細は、「リザーブドインスタンスの設定」をご参照ください。

自動スケーリング:

バージョン管理とカナリアリリース:

Knativeサービスへのアクセス:

  • Knativeサービスのデフォルトのドメイン名は、{route}.{namespace}.{default-example.com} 形式です。 {default-example.com} はデフォルトのドメイン名サフィックスです。 カスタムドメイン名サフィックスを指定できます。 詳細については、「Knative Serviceのカスタムドメイン名の指定」をご参照ください。

  • カスタムドメイン名を使用してKnativeサービスを公開する場合は、データ送信を保護するためにドメイン名の証明書を設定することをお勧めします。 詳細については、「HTTPS経由でサービスにアクセスするための証明書の設定」をご参照ください。

  • livenessプローブとreadinessプローブを設定して、サービスのヘルスステータスと可用性を監視および管理できます。 詳細については、「Knativeでのポートプロービングの設定」をご参照ください。

高度な機能

Knative Eventing: Knative Eventingは、クラウドネイティブ開発の一般的な要件を満たしています。 Knative Eventingは、サーバーレスイベント駆動モードのアーキテクチャも提供します。 このアーキテクチャは、イベントソース、イベントの取り込みとサブスクリプション、およびイベントのフィルタリングで構成されます。 ACK Knativeは、Kafka、GitHub、MNS、RocketMQなどのさまざまなイベントソースをサポートしています。 詳細については、「Knative Eventingの概要」をご参照ください。

Knative Functions: Knative Functionsは、Knative Servicesを作成、ビルド、およびデプロイするための簡単な方法を提供します。 詳細については、「Knative関数のデプロイ」をご参照ください。

AI推論サービス:

KServeは、Kubernetesベースの機械学習モデルサービングフレームワークです。 KServeは、TFServing、TorchServe、Triton推論サーバーなどの1つ以上のトレーニング済みモデルを、モデルサービスランタイムにデプロイするために使用できるシンプルなKubernetes CustomResourceDefinitions (CRD) を提供します。 KServeをデプロイし、KServeに基づいて推論サービスを迅速にデプロイできます。

ACKは、モデルのデプロイを高速化する方法やGPU共有を構成する方法など、AI推論サービスをKnativeにデプロイするためのベストプラクティスも提供します。 詳細については、「KnativeでAI推論サービスをデプロイするためのベストプラクティス」をご参照ください。

ASM: サービスメッシュをKnative Servicesに統合して複雑なトラフィック管理を実装し、サービスセキュリティを向上させる場合は、ASMを使用することを推奨します。詳細については、「」をご参照ください。ASMとは何ですか?

可视性とコスト管理

ログ収集: KnativeのSLSを使用して、これらの機能を開発せずにログデータを収集、消費、送信、クエリ、分析できます。 詳細については、「KnativeでのSimple Log Serviceの有効化」をご参照ください。

Knativeダッシュボード: KnativeをPrometheusのManaged Serviceに接続して、応答遅延やリクエストの同時実行などの統計を表示できます。 詳細については、「Prometheus ServiceでのKnativeダッシュボードの表示」をご参照ください。

モニタリングとアラート: SLSを使用して、収集したログデータに基づいてアラートルールを設定できます。 詳細については、「サービスのアラートイベントの表示」をご参照ください。

コストインサイト: IT企業の財務管理者として、Knativeのコストインサイト機能を有効にして、ACKクラスターのリソース使用量とコスト傾向を分析できます。 詳細については、「Knative Serviceのコストインサイト機能の有効化」をご参照ください。

課金

ACKクラスターでACK Knativeを使用する場合、ACK Knativeは無料です。 ただし、Knativeを使用するときに作成されたクラウドリソースに対して課金されます。 たとえば、ECSインスタンス、SLBインスタンス、およびNAT Gatewayを作成して使用する場合、リソースの課金ルールに基づいてリソースに対して課金されます。 ACKクラスターの課金ルールの詳細については、「課金ルール」と「クラウドサービスの課金」をご参照ください。

よくある質問

ACK Knativeを使用しているときに問題が発生した場合は、まずKnative FAQを参照して、これらの問題を自分でトラブルシューティングできます。

お問い合わせ

Knativeについて質問や提案がある場合は、DingTalkグループ23302777に参加してください。

関連ドキュメント

  • 最新の機能とバグ修正を取得するために、できるだけ早い機会にKnative Servingを更新してください。 オフピーク時に更新を実行することを推奨します。 詳細については、「Knativeリリースノート」および「Knativeコンポーネントのアップグレード」をご参照ください。

  • Knativeの公式ドキュメントには、Knativeを使用してオンラインストアアプリケーションをビルド、デプロイ、および監視する方法を説明するチュートリアルがあります。 詳細については、「Knative Bookstoreチュートリアル」をご参照ください。