Google + CNCF Incubating の Kubernetes ベースサーバーレスプラットフォーム。Serving + Eventing + Functions を提供、AWS Lambda / Google Cloud Run のオープンソース代替、エンタプライズ + ハイブリッドクラウドで活用。
Knative(ケーネイティブ、Kubernetes-native)は、Google が 2018 年 7 月の Cloud Next 18 カンファレンスで公開、後年 CNCF Incubating(2022 年昇格)プロジェクトとなった Kubernetes ベースのサーバーレスプラットフォームです。「Knative」の名称は「Kubernetes-native」の合成で、Kubernetes ネイティブにサーバーレスワークロードを実現することを表現しています。
開発の背景は、(1)AWS Lambda(2014、サーバーレスのパイオニア)・Azure Functions(2016)・Google Cloud Functions(2017)等のクラウド SaaS サーバーレスが企業で広く採用された反面、(2)各クラウドベンダー独自実装でロックイン懸念 + マルチクラウド + ハイブリッド + Edge 環境への対応が困難・(3)オープンソース + Kubernetes ネイティブの「クラウドベンダー非依存サーバーレス基盤」のニーズが高まった、ことです。Google + IBM + Pivotal(現 VMware)+ Red Hat + SAP 等が共同開発に参加、業界横断の標準サーバーレス基盤を目指して開発されました。
主要コンポーネントは、3 つの中核モジュールで構成されます。(1)Knative Serving(2018 から、ステートレスサービスのスケーリング、HTTP / gRPC リクエストに応じてゼロから N コンテナへ自動スケール、トラフィック分割 + Blue/Green デプロイ + Canary リリース対応、Istio / Contour / Kourier / Cilium / Envoy Gateway 等の Ingress 対応)・(2)Knative Eventing(2018 から、イベント駆動型アーキテクチャ、CloudEvents v1.0 標準 + Broker(Kafka / RabbitMQ / In-Memory)+ Trigger + Channel + Source / Sink、AWS EventBridge / Azure Event Grid / Google Pub/Sub の代替)・(3)Knative Functions(2022 から、関数ベース軽量デプロイ、AWS Lambda / Google Cloud Functions 互換、Java / Python / Go / Node.js / TypeScript / Rust / Quarkus / Spring Boot Function 対応)、です。
Knative Serving の革新は、(1)Cold Start 最適化(コンテナ起動 1-3 秒、AWS Lambda の 100ms 級には及ばないが Kubernetes 環境では業界最速)・(2)スケールゼロ(リクエストがないとコンテナ数ゼロ、コスト削減)・(3)スケールアップ(リクエスト負荷に応じて自動スケール、最大数千コンテナ)・(4)KPA(Knative Pod Autoscaler、Knative 独自オートスケーラ、Kubernetes HPA より高速)・(5)Revision 管理(各デプロイバージョンを Revision として保存、ロールバック + Canary 容易)、です。
主要採用は、(1)Google Cloud Run(2019、Knative Serving フルマネージド版、サーバーレス + コンテナの統合、世界的シェア)・(2)Red Hat OpenShift Serverless(2020、エンタプライズ Kubernetes 向け Knative)・(3)IBM Cloud Code Engine(2022)・(4)TriggerMesh(マルチクラウドサーバーレスプラットフォーム、Knative ベース)・(5)Pivotal Function Service / VMware Tanzu Application Service(後年 Spring Cloud Function 統合)・(6)各種 Kubernetes ディストリビューション(Anthos / Rancher / 自前)、です。
CNCF Incubating(2022 年昇格)により、本番運用 + エンタプライズ採用 + 長期サポートが保証されており、Kubernetes ネイティブサーバーレスの事実上の業界標準として 2024-2030 年に普及拡大が予想されます。
| プラットフォーム | 提供 | デプロイ先 |
|---|---|---|
| Knative | Google + CNCF | 自前 Kubernetes |
| AWS Lambda | AWS | AWS SaaS のみ |
| Azure Functions |
| Microsoft |
| Azure SaaS のみ |
| Google Cloud Functions | GCP SaaS のみ |
| Google Cloud Run | Knative ベース GCP SaaS |
| OpenFaaS | OSS | 自前 Kubernetes |
| Fission | OSS | 自前 Kubernetes |
Knative は通常のコンシューマ自作 PC で必要になる技術ではありませんが、ホビーホームラボ + 自宅 Kubernetes 環境 + サーバーレス開発学習の上級者には極めて有用です。kind(Kubernetes in Docker)+ Knative kn quickstart で簡単にローカル環境に Knative Serving + Eventing + Functions をデプロイ可能で、AWS Lambda 互換のサーバーレスアプリ開発を学習できます。
Java / Python / Go / Node.js / TypeScript 等の Knative Functions 開発 + Kubernetes クラウドネイティブ + サーバーレスアーキテクチャの学習に最適です。Google Cloud Run + 互換性があるため、ローカル開発 → Cloud Run デプロイのハイブリッド開発も容易、業務 Kubernetes + クラウド開発スキルの習得に直接役立ちます。
Q1: Knative と AWS Lambda どちらを選ぶべきですか? A: 単純な使い勝手 + フルマネージド + 短時間関数 → AWS Lambda、自前 Kubernetes + マルチクラウド + ハイブリッド + 長時間ワークロード → Knative です。Knative は Kubernetes 知識が必要ですが、ベンダーロックイン回避 + 柔軟性で大企業エンタプライズで採用が広がっています。
Q2: Cold Start の問題は? A: Knative の Cold Start は 1-3 秒で、AWS Lambda(100ms 級)より遅いです。これは Kubernetes コンテナ起動オーバーヘッドが原因です。Knative では Min Scale > 0 設定で Pre-Warm Container を保持してCold Start を回避することも可能(コスト増)、用途に応じて設定します。
Q3: 自宅で Knative を試す方法は?
A: kn quickstart(無料)で kind + Knative + Kourier 一括インストール可能、Docker 環境で簡単に起動します。Knative Functions + Java/Python サンプル + Eventing CloudEvents 実演で学習できます。Kubernetes Helm Chart + Operator も提供されており、本番級デプロイ学習も容易です。