※これはFirst principles: Making Kubernetes serverless with OCI Virtual Nodesの翻訳です
Kubernetes はコンテナ・オーケストレーションの標準となり、それを利用することでコンテナ・アプリケーションの大規模なクラスタを管理するための運用上のオーバーヘッドが削減されました。 ただし、Kubernetes には常に次の小さな秘密がありました。それは、Kubernetes システム内の基盤となるホストのクラスタが、それ自体を管理しないということです。Kubernetes は DevOps をシンプルにできますが、運用上のオーバーヘッドをなくすことはできません。それとも、それは可能なのでしょうか?
Oracle Cloud Infrastructure (OCI) では、OCI Container Engine for Kubernetes (OKE) の一部として、Virtual Nodesと呼ばれる新機能の提供を開始しました。これは、サーバーレスの Kubernetes 体験を提供します。 Virtual Nodesは、従来の管理対象ノードにおいて起こるインフラストラクチャの運用上のオーバーヘッドを取り除きます。
次の動画では、コンテナを実行するためのサーバーレスのオプションである Container Instances で Kubernetesのpodがどのように実行され、Virtual Nodes(このテーマの主な要素であり、無限にスケーラブルな Kubernetesのノード)の提供について説明します。
Virtual Nodes
Virtual Nodesは、クラスタ内の従来の Kubernetes ノードのように動作する新しいタイプのノードです。 ただしVirtual Nodesはサーバーレスであり、OCI によって完全に管理されます。 ローカルでコンテナ・ランタイムでpodを実行する従来のノードとは異なり、Virtual Nodesはコンテナ・ランタイムをContainer Instances に依存します。Container Instances とそのアーキテクチャの概要については、以前の First Principles のビデオ ブログ、Container Instancesの内部 を参照してください。OKE のマネージドノードはインフラストラクチャをシンプルにすることを目的としていますが、Virtual Nodedsはインフラストラクチャを排除します。 各Container Instanceは、単一のpodにマップされます。 図 1 は、Virtual Nodesの論理コンポーネントを示しています。 この動画では、podとノードの詳細な概要を提供し、Virtual Nodesの概要と技術的な詳細について説明します。

図1:Virtual Nodes概要
Virtual Nodesは、Kubernetes にとって通常のノードのように見えて機能する、完全に管理された可用性の高いアプリケーションです。Virtual Nodesは、オープン ソースの Cloud Native Computing Foundation (CNCF) Virtual Kubelet プロジェクトに依存して、OCI Container Instancesと Kubernetes 間の変換レイヤーを提供します。 この機能により、OCI は、サーバーレス Kubernetes 体験を提供するフルマネージドの仮想 kubelet 製品を提供する最初のメジャーなクラウドプロバイダになります。 図 2 は、Virtual Nodesのアーキテクチャを示しています。

図2:Virtual Nodesのアーキテクチャ
Virtual Nodesの主な機能は以下です。
- pod管理: 管理対象ノードと同様に、Virtual Nodesは、スケジュールされたpodを監視してそのライフサイクルを管理し、ステータスを Kubernetes に報告する役割を果たします。 このソリューションと他のクラウドでの同機能の主な違いは、Virtual Nodesは最大 1,000 個のpodを実行できるのに対し、他のクラウドではpodとノードの比率が 1:1 であることです。 この機能により、Virtual Nodesは大規模なワークロードに合わせて大幅に拡張できます。
- HTTPS kubelet API: この API は、podログのフェッチ、podの実行、podのアタッチ、自動スケーリングのためのpodメトリックの収集などを担当するトラフィックを処理します。Virtual Nodesの HTTPS API は、リーダーだけでなく両方の正常なメンバーが着信トラフィックを処理することで、可用性が高くなります。
この動画では、Virtual Nodesのアーキテクチャ、主なスケーリング、高可用性設計のトレードオフ、およびより安全で堅牢なソリューションを提供するために使用するアプローチについて説明しています。
Virtual Nodesを使用する場合
restfulなサービス、バッチ処理、人工知能と機械学習、ビッグデータ、継続的インテグレーションとデプロイ (CI/CD) などの標準的なユース ケースでは、マネージドノードではなくVirtual Nodesの使用に移行することでメリットが得られます。 Virtual Nodesはpodで要求されたリソースに対してのみ請求され、podが終了すると請求が自動的に停止するため、揮発的なワークロードに適しています。 Virtual Nodesのpodは、Docker のような cgroup ベースのコンテナ・ランタイムではなくContainer Instancesによってサポートされるため、Virtual Nodesは実際のノードよりもはるかに強力な分離を提供します。
実際のノードには、ベアメタル、RDMA、GPU などのより多様なインフラストラクチャをサポートし、ビッグデータのジョブのgangスケジューリングなどの複雑なユースケースをサポートするという利点があります。
現在、Virtual Nodesを備えた完全なサーバーレスクラスタ、または実ノードのクラスタのいずれかを選択する必要がありますが、究極の柔軟性のために、両方のタイプで構成されるクラスタのサポートを提供する予定です。
まとめ
OCI は、1 つのノードに 1,000 を超えるpodの密度を備えた完全マネージド型の仮想のノードのサービスを提供する、最初のメジャーなクラウドプロバイダです。 Vitual Nodesは、完全に管理された仮想 kubelet と OCI Container Instancesを使用するサーバーレス Kubernetes モデルに移行することで、従来のコンテナホストの運用上のオーバーヘッドを排除します。Vitual Nodesは OCI Container Instances を使用してコンテナを実行し、仮想化による強力な分離を提供します。 特殊なアプリケーションのユースケースでは従来のノードが必要ですが、ほとんどのアプリケーションでは従来のノードをVitual Nodesに置き換えることでメリットが得られます。
Oracle Cloud Infrastructure Engineering は、エンタープライズ企業の最も要求の厳しいワークロードを処理します。これにより、クラウドプラットフォームの設計について異なる考え方を迫られました。 Pradeep Vincent と他のOracleの経験豊富なエンジニアが主催するこの First Principles シリーズの一部として、これらのエンジニアリングの深掘りをさらに行っています。
詳細については、次のリソースを参照してください。
