v0.2リリース
公開日:2021年10月6日
Knative v0.2 リリース発表
プラグイン性、オートスケーリング、安定性、パフォーマンスの向上
Kubernetes上で最新のアプリケーションを構築するためミドルウェアコンポーネントのセットであるKnativeの新しいリリースを発表できることを嬉しく思います。Knativeの0.2リリースは、7月のプロジェクト開始以来、最初の重要なアップデートです。これは、増加するKnativeデプロイメントから得られた知見に対応するために、Knativeコミュニティ全体による数か月にわたる努力の成果です。

0.2リリースの最もエキサイティングな側面は、イベント処理の導入です。イベント処理コンポーネントは、Knativeによってすでに定義されている他の2つの基礎ブロック、サービングとビルドを補完するものです。コミュニティがこの新しい機能を使用して開発する新しいタイプのイベントと革新的なソリューションに期待しています。
サービングは、「内部」で大きな改善を行い、Knativeの主要な領域を新しい内部APIを備えたサブシステムにカプセル化することで、プラグイン可能なネットワーキング、オートスケーリング、およびキャッシングのサポートを可能にしました。
完全なリリースノートは、Knative サービング、ビルド、およびイベント処理リポジトリで入手できます。以下は、いくつかのハイライトです。
新しいイベント処理リソースモデル
イベント処理リポジトリは、リソースモデルの大幅な改訂を経て、ソースがカスタムリソース定義(CRD)に移行されました。現在、イベント処理には、標準のKubernetesの概念が高度に活用されており、検証の向上、インターフェースの簡素化、RBACのサポートが実現しています。新しいアーキテクチャでは、チャネルとサブスクリプションを中心としたよりシンプルなオブジェクトモデルが使用されています。
疎結合
v0.1で寄せられた肯定的なフィードバックの1つは、Knativeのビルディングブロックを定義する「上品な」選択でした。v0.2では、Knativeはこれをさらに進化させて、オペレーターがビルド、サービング、イベント処理のコンポーネントを互いに独立してインストールできるようにしています。Knativeコンポーネント間のこれらの疎結合を可能にするコントラクトは、時間の経過とともに、Knative以外のビルドをサービングで使用したり、イベントをサービング以外のデプロイメントに配信したりするなど、サードパーティの統合も可能にします。コミュニティがこれをどのような方向に持っていくのか、楽しみにしています。
プラグイン可能なサブシステム
Knativeのカスタマイズを希望する声も多く寄せられました。目標は常に、ある程度のプラグイン性をサポートすることであったため、v0.2ではカスタマイズが大幅に改善されました。v0.2では、コアとなるリソースモデルを実装するサブシステム(ネットワーキング、オートスケーリング、キャッシング)から分離するために、3つの新しい内部APIを導入しました。ネットワーキングにより、開発者はIstioの依存関係を代替のイングレス実装に置き換えることができます。オートスケーリングにより、開発者は「安価で簡単な」オートスケーラーを独自設計のものに置き換えることができます。キャッシングにより、開発者はイメージキャッシング戦略を採用して、クラスター全体にコンテナーイメージをプリロードできます(実装はバンドルされていないため、これは純粋な拡張ポイントです)。
コールドスタートの改善
コールドスタートのパフォーマンスにおける2つの支配的な要因は、サイドカーの挿入とイメージプルのレイテンシです。1.0.2リリースにより、IstioはEnvoyのプログラミング時間の短縮に成功しました。さらに、サイドカーの挿入を無効にしてKnativeをインストールできるようになりました。イメージプルのレイテンシに対処できるように、「イメージ」リソース(knative/cachingの一部)と呼ばれる新しい拡張ポイントを公開しました。これには、コントローラーがクラスター全体にユーザーイメージをプリロードするために必要なすべての情報が含まれています。キャッシングは、コミュニティが構築していくことを楽しみにしているもう1つの機能です。
オートスケーリング
以前のリビジョンごとのオートスケーラーを、単一の共有オートスケーラーに置き換えました。新しいオートスケーラーは、以前のオートスケーラーと同じロジックに基づいていますが、純粋にメトリック駆動型(0->1->0を含む)に進化しており、不要なリビジョンservingStateフィールドが排除されています。ConcurrencyModel(シングルまたはマルチ)を整数値のContainerConcurrencyフィールドに置き換えました。これにより、特定のユースケース(たとえば、制限付きスレッドプール)で同時実行数を1以外の値に制限できます。
ビルド
Knative Buildには、新しいClusterBuildTemplateリソースなど、多くの段階的な改善が追加されました。オペレーターは、名前空間ごとに1回ではなく、1回だけBuildTemplatesのセットをインストールできるようになりました。ビルドテンプレートパラメーターは、ビルドステップイメージ名にも適用できるようになりました。Build仕様の新しい機能により、ユーザーはビルド全体のタイムアウト、ノードセレクター、およびアフィニティを指定できます。最後に、ビルドステータスが拡張され、ステップごとのビルドの進捗状況とビルドの保留時間が報告されるようになりました。
KubeConでのKnative
ぜひお越しください!上海とシアトルで開催される次回のKubeConカンファレンスでは、Knativeのセッションが多数あります。
上海
シアトル
- イントロ:Knative生産性BoF
- Knative:0から無限大へのスケーリング
- Knativeを使用した機械学習モデルのサービングとパイプライン
- チュートリアル:Knativeを実際に体験する
- Knative Buildを使用してKubernetesクラスターにコンテナーイメージを構築する
- Knativeサーバーレスフレームワークを介して深層学習推論を構築する方法
- T-Mobileストアロケーターのサーバーレスジャーニー(KnativeとKubernetesを活用)
- 仲間たち:Knative
- 詳細:Knative生産性BoF
- Knativeを使ったKubernetesへのサーバーレスアプリのデプロイ(追加登録および料金が必要です)