今日のクラウドネイティブ環境では、Kubernetes (K8s) がコンテナ オーケストレーション ツールとして確立されています。K8 の人気に伴い、ストレージも K8 ユーザーにとって重要な関心事となっています。さまざまなシナリオのニーズを満たすために、K8 はさまざまなアーキテクチャに基づいたさまざまなストレージ ソリューションをサポートできます。これらのプランの違いは何ですか? ユーザーはどのように選択すればよいでしょうか? この記事では、ローカル ディスク、CSI 外部商用ストレージ、K8s ネイティブ ストレージの 3 つの K8s 永続ストレージ ソリューションをアーキテクチャの観点から詳しく紹介し、記事の最後で各ソリューションの機能、長所、短所を比較、分析します。 。
ローカルディスク
まず、K8s を使用すると、ユーザーはローカル ディスクをストレージ デバイスとしてサーバーに直接接続できます。ディスクとアプリケーション システム間の I/O パスが最短であるため、ローカル ディスクは最高のパフォーマンスを提供できます。同時に、RAID はある程度の信頼性を保証し、単一のディスク障害によるデータ損失を回避できます。したがって、現在、多くのユーザーがこの方法を使用してステートフル アプリケーションにストレージ サービスを提供しています。
しかし同時に、ローカル ディスク ソリューションには、可用性と拡張性の点で大きな欠点もあります。
- ローカル ディスクではノード レベルの高可用性を提供できないため、物理ノードに障害が発生した場合、アプリケーションを他のノードに復元できません。ビジネス システムにノード レベルの高可用性要件がある場合、ビジネス システムはデータ レベル自体で高可用性を実装する必要があり、これによりビジネス システムの複雑さが大幅に増加します。
- ローカル ディスクは、K8s 環境でのビジネスの俊敏性要件を満たすことができません。ビジネスで使用されるストレージ スペースは、ローカル ディスクのサイズによって制限されます。ディスク スペースの上限に達した後、ディスクを追加する手順は複雑になります。新しく追加されたハードディスク容量を使用するには、Pod 内の構成を手動で変更する必要があり、機敏でスムーズな拡張を実現することが困難になります。さらに、物理ノードのハードディスクの高可用性を実現するには、RAID を導入する必要がありますが、これも非常に時間と手間がかかり、高価なソリューションであり、多数のノードに十分なストレージ容量を構成することは困難です。アプリケーションシステムを短期間で構築します。
さらに、このソリューションは展開と障害後の修復の両方に多くの人的資源を必要とするため、ローカル ストレージ ソリューションの運用コストと保守コストが大幅に増加します。同時に、ストレージスペースをノード間で共有できないため、ストレージスペースを無駄にしやすくなります。
一般に、ローカル ディスク ソリューションは、ビジネス コンテナ化の初期段階での小規模なトライアル、または重要性の低いデータ ストレージとしての使用にのみ適しており、大規模な運用シナリオで広く使用することは困難です。
CSI 外部商用ストレージ
K8 に永続ストレージを提供するもう 1 つの方法は、コンテナ ストレージ インターフェイス (CSI) を介して K8 プラットフォームを基盤となるストレージ インフラストラクチャに接続し、K8 がストレージを動的にプロビジョニングおよび構成し、ストレージ操作を自動化できるようにすることです。国際的な分析機関である GigaOm は、これらの外部ストレージ ソリューションをさらに 2 つのタイプに分類しています。商用ストレージ (Enterprise Storage) と K8s ネイティブ ストレージ (Kernetes-Native Storage) です。
商用ストレージには、ソフトウェア デファインド ストレージ (分散ストレージなど) と従来の集中型ストレージの両方が含まれます。K8s 環境専用に設計された K8s ネイティブ ストレージとは異なり、商用ストレージは通常、主にベア メタル環境と仮想化環境にサービスを提供します。エンタープライズで広く使用されているため、商用ストレージにとって CSI プラグインを通じてコンテナ ストレージ サポート機能を取得することは非常に重要です。便利で経済的な選択。
しかし、商用ストレージは基本的に仮想化時代の機能に重点を置いているため、一部のメーカーが発売するストレージ ソリューションには依然としてクラウドネイティブ環境をサポートする機能が欠けています。なお、CNCFが認定する「クラウドネイティブストレージ」には、K8sネイティブストレージだけでなく、さまざまなアーキテクチャに基づく商用ストレージソリューションも含まれており、製品の機能や性能は大きく異なるため、ユーザーはより注意が必要です。
外部集中ストレージ
K8s クラスターの外部集中ストレージは、共有ストレージにリモートでアクセスする機能を提供します。ローカル ディスク ソリューションと比較して、集中ストレージは、アプリケーション システムの高可用性の問題を解決します。ビジネス ポッドが配置されているサーバーに障害が発生した場合、共有ストレージを介してアプリケーションを他のノードにプルアップできます。集中ストレージをベースにした多くの商用ソリューションは、ストレージ ソリューションは、スナップショット、クローン作成、災害復旧などの高度な機能も提供します。さらに、データの集中ストレージにより、ローカルストレージがディスクスペースを無駄にする問題もある程度解決されます。
ただし、従来の集中型ストレージ (ストレージ コントローラーとディスク キャビネット) のアーキテクチャでは、クラウド ネイティブの高い同時実行性と俊敏性の要件を十分に満たすことができないと判断されています。
- 集中ストレージは単一のビジネス システムに高いパフォーマンスを保証しますが、多数の同時ビジネス アクセスに直面すると、ストレージ コントローラーがパフォーマンスのボトルネックになります。多数の企業のパフォーマンス要件を満たすには、複数の集中ストレージ システムを使用する必要があり、ストレージ システムの管理コストも大幅に増加します。
- 集中ストレージはディスク キャビネットの形式のため、スケーラビリティが低く、運用とメンテナンスの作業負荷が高く、短期間での大量のボリュームの同時作成と破棄に対処するのが難しく、クラウド ネイティブの機敏性に欠けています。
外部分散ストレージ
分散ストレージは、ネットワーク上の複数の独立したデバイスにデータを分散保存することで、優れた水平方向の拡張性と俊敏性を備え、分散コンピューティング アーキテクチャに基づいたクラウド ネイティブ アプリケーションに接続する場合、そのパフォーマンスと高可用性も集中型ストレージよりもはるかに優れています。Gartnerはまた、分析レポート「コンテナとKubernetes環境におけるストレージの選択と実践方法」の中で、クラウドネイティブのデータサービスが使用すべきストレージは「分散アーキテクチャに基づいており、あらゆる規模で導入できる」必要があると強調した。
ただし、市場には K8 用の分散ストレージ ソリューションが混在しており、一部の製品はオープンソース テクノロジに基づいて単純にパッケージ化されており、そのパフォーマンス、安定性、および K8s 環境のサポートが実稼働レベルの基準を満たすことが困難です。ユーザーは、自社開発テクノロジーを使用したストレージ ソリューションに注目し、製品のパフォーマンス、可用性、信頼性、セキュリティ、保守性を「プロダクション グレード」の基準に基づいて総合的に評価することをお勧めします。
K8s ネイティブ ストレージ
K8s ネイティブ ストレージは、コンテナーをサポートするために特別に構築されたストレージ ソリューションです。この種のストレージは、K8sとより深く統合されており、コンテナレベルのデータサービス粒度と自動化されたストレージリソースの運用および保守機能を備えているため、K8s上のコンテナアプリケーションに柔軟な拡張機能と自動化された運用および保守機能を提供できます。
K8s ネイティブ ストレージの機能の詳細については、「K8s 永続ストレージ、クラウド ネイティブ ストレージ、コンテナ ネイティブ ストレージ、および K8s ネイティブ ストレージの違いを 1 つの記事で理解する」の記事を参照してください。
現在、主流の K8s ネイティブ ストレージには、オープン ソース製品 (Rook (Ceph ベース) および Longhorn に代表される) とクローズド ソースの商用製品 (Portworx および IOMesh に代表される) の 2 つの主なタイプがあります。どちらのソリューションもK8sネイティブのデータストレージ機能を提供でき、オープンソース製品のため調達コストがかからない、技術力のある顧客が自社で開発できる、コミュニティサポートがあるなど、それぞれ長所と短所がありますが、重大な障害や脆弱性が発生した場合、市販品と同じように操作するのは難しいため、メーカーと同様に専門チームによる迅速な対応ときめ細やかなサービスサポートをご提供いたします。さらに、パフォーマンス テストを通じて、自社開発のクローズド ソース テクノロジに基づく現在の K8s ストレージ ソリューションが、パフォーマンスと安定性の点でオープン ソース製品よりも優れていることがわかります。テストの詳細については、主流の K8s 永続ストレージ ソリューション(Longhorn / Rook / OpenEBS / Portworx / IOMesh) の機能とパフォーマンスの比較を参照してください。
概要: さまざまなアーキテクチャを使用した K8s 永続ストレージ ソリューションの長所と短所の分析
上記の分析に基づいて、運用レベルのコア アプリケーション システムをサポートするための K8 のストレージ要件 (ビジネス シナリオとして一般的なデータ サービスを考慮) を組み合わせて、次の表を使用してアーキテクチャ、パフォーマンス、ストレージ リソースの共有*、各ストレージ ソリューションの拡張性、高パフォーマンス、可用性、セキュリティ、運用と保守の難易度、K8 のネイティブ サポート**、およびその他の機能が読者の参考のために提供されています。
* ノード間でのステートフル アプリケーションの柔軟なスケジューリングと、複数の Pod ストレージの同時読み取りと書き込みのサポートを指します。
** K8s との緊密な統合を指し、軽量、自動化、標準化、俊敏性などの K8s の利点を最大限に発揮できます。
K8s ネイティブ ストレージには、K8s 環境でのステートフル アプリケーションのサポートにおいて全体的な利点があることがわかります。現在、中国初の K8s ネイティブのエンタープライズレベルの分散ストレージは、Zhiling Haina SmartX によって発売された IOMesh です。IOMeshは、SmartXが独自に開発し、実稼働環境で検証された分散ブロックストレージをコアとし、コンテナ化された導入モデルに基づいており、K8sネイティブ開発および運用保守システムにシームレスに統合してストレージを統合管理することができます。 K8s クラスター内のリソース K8s クラスター上で実行されるさまざまなステートフル アプリケーションは、安定した高性能の永続ストレージ リソースを提供します。ソリューションの詳細については、ブログを読むか、製品説明ビデオを見るか、クリックして「IOMesh ユーザー ガイド」を入手してください。
参考記事:
1. Kubernetes データ ストレージ ソリューション v4.0、GigaOm、2023 を評価するための重要な基準
https://research.gigaom.com/report/key-criteria-for-evaluating-kubernetes-data-storage-solutions/
2. コンテナおよび Kubernetes デプロイメントのストレージの選択と実装にどのようにアプローチすればよいか、Gartner、2022
https://www.gartner.com/document/4013517