- Kubernetes 環境で非アクティブなコンテナのリソース浪費を減らすために開発されたランタイムツール
- 一定時間 TCP 接続がない場合、コンテナを自動的にディスクへチェックポイント保存
- containerd shim 形式で動作し、コンテナのメモリ状態を保存して終了した後、最初の接続時に数ミリ秒以内で復元
- 復元時にはアプリケーションのすべての状態がそのまま復旧され、ユーザー視点では遅延がほとんどない
- eBPF ベースのリダイレクトを使って TCP パケットをプロキシへ渡し、復元完了後は直接接続に切り替え
- CRIU - Checkpoint and Restore in Userspace を利用してチェックポイントと復元を実行
- アクティベーションシーケンス (activation sequence) により、最初のリクエスト時に自動復元されるフローを提供
- 最近の TCP アクティビティを追跡し、頻繁な中断・復元を防ぐインテリジェントな待機ロジックを含む
- Kubernetes 上ではコンテナが継続して実行中であるかのように認識され、ランタイムの再起動を防止
kubectl exec コマンド実行時には自動復元され、通常のコンテナのようにアクセス可能
- 各 shim プロセスがメトリクスを収集し、ノード単位のzeropod-managerがそれを統合して HTTP エンドポイントとして公開
- クラスターが対応している場合、リソース要求を動的に調整するin-place scaling機能を提供
- ノードドレイン時にスケールダウンされた Pod を他ノードへマイグレーション可能
- 実験的機能としてライブマイグレーションもサポート
- 低トラフィックサービス、開発・ステージング環境、Heroku 類似プラットフォームの低価格 tier、静的サイトのバックエンド構成などに適している
- ほとんどのプログラムは追加修正なしで動作し、containerd ログを通じて CRIU エラーを分析可能
4件のコメント
inetdの再発明?(冗談)
去年 AWS re:Invent で見た Platform 9 の Elastic Machine Pool は、その時はちょっと試してみるには B2B 専用でハードルが高かったのですが、これはインストールも簡単で動作も直感的なので良いですね。開発環境でユーザー体験を損なわずにリソースを積極的に割り当てたいと思っていたので、PoC をしてみて問題なければ導入を検討する価値がありそうです。
KNative と何が違うのかと思ったら、以下の 2 文が要点のようですね。
lambda. . .. ?