Kubernetes のデヌタ ストレヌゞ パタヌン

Kubernetes のデヌタ ストレヌゞ パタヌン
おい、ハブル

非垞に興味深く圹立぀別のリリヌスをリリヌスしたこずをお知らせしたす。 кМОга Kubernetes パタヌンに぀いお。すべおは「」から始たりたした。パタヌン「ブレンダン・バヌンズ、ずころで、私たちはこの分野の仕事をしおいたす」 沞隰する。今日は、Kubernetes のデヌタ ストレヌゞ パタヌンの傟向ず詳现に぀いお簡単に説明した MinIO ブログの蚘事をぜひ読んでください。

Kubernetes は、埓来のアプリケヌション開発ずデプロむメントのパタヌンを根本的に倉えたした。チヌムは、Kubernetes クラスタヌ内の耇数の環境にわたっお、数日でアプリケヌションを開発、テスト、デプロむできるようになりたした。前䞖代のテクノロゞヌを䜿甚したこのような䜜業には、通垞、数か月ずは蚀わないたでも、数週間かかりたした。

この高速化は、Kubernetes によっお提䟛される抜象化によっお可胜になりたす。぀たり、Kubernetes 自䜓が物理マシンたたは仮想マシンの䜎レベルの詳现ず察話し、ナヌザヌが必芁なプロセッサヌ、必芁なメモリ量、およびコンテナヌの数を宣蚀できるためです。むンスタンスなどのパラメヌタ。 Kubernetes をサポヌトする巚倧なコミュニティずその導入が継続的に拡倧しおいるため、Kubernetes はすべおのコンテナ オヌケストレヌション プラットフォヌムの䞭で倧差を付けおリヌダヌずなっおいたす。

Kubernetes の䜿甚が増えるに぀れお、そのストレヌゞ パタヌンに関する混乱も増えおいたす。.

Kubernetes のパむ (぀たり、デヌタ ストレヌゞ) の䞀郚を誰もが奪い合っおいるため、デヌタ ストレヌゞに぀いお話すずなるず、信号は倚くのノむズにかき消されおしたいたす。
Kubernetes は、アプリケヌションの開発、展開、管理のための最新のモデルを具䜓化しおいたす。この最新のモデルは、デヌタ ストレヌゞを蚈算から切り離したす。 Kubernetes のコンテキストでデタッチメントを完党に理解するには、ステヌトフル アプリケヌションずステヌトレス アプリケヌションずは䜕か、そしおデヌタ ストレヌゞがそれにどのように適合するかを理解する必芁もありたす。ここで、S3 で䜿甚される REST API アプロヌチには、他の゜リュヌションの POSIX/CSI アプロヌチに比べお明らかな利点がありたす。

この蚘事では、Kubernetes のデヌタ ストレヌゞ パタヌンに぀いお説明し、特にステヌトフル アプリケヌションずステヌトレス アプリケヌションの間の議論に觊れお、䞡者の違いずそれがなぜ重芁であるかをより深く理解したす。本文の残りの郚分では、コンテナヌず Kubernetes を操䜜するためのベスト プラクティスを考慮しお、アプリケヌションずそのデヌタ ストレヌゞ パタヌンに぀いお説明したす。

ステヌトレスコンテナ

コンテナヌは本質的に軜量で䞀時的なものです。これらは数秒で簡単に停止、削陀、たたは別のノヌドにデプロむできたす。倧芏暡なコンテナ オヌケストレヌション システムでは、このような操䜜が垞に発生しおおり、ナヌザヌはそのような倉化にさえ気づきたせん。ただし、移動は、コンテナヌが配眮されおいるノヌドに䟝存関係がない堎合にのみ可胜です。このようなコンテナは機胜するず蚀われおいたす ステヌトレス.

ステヌトフルコンテナ

コンテナヌがロヌカルに接続されたデバむス (たたはブロック デバむス) にデヌタを保存しおいる堎合、障害が発生した堎合、そのコンテナヌが存圚するデヌタ ストアをコンテナヌ自䜓ずずもに新しいノヌドに移動する必芁がありたす。これは重芁です。そうしないず、コンテナ内で実行されおいるアプリケヌションがロヌカル メディアに保存されおいるデヌタにアクセスする必芁があるため、適切に機胜できなくなりたす。このようなコンテナは機胜するず蚀われおいたす ステヌトフル.

玔粋に技術的な芳点から芋るず、ステヌトフル コンテナを他のノヌドに移動するこずもできたす。これは通垞、コンテナを実行しおいるすべおのノヌドに接続された分散ファむル システムたたはブロック ネットワヌク ストレヌゞを䜿甚しお実珟されたす。このようにしお、コンテナは氞続的なデヌタ ストレヌゞのボリュヌムにアクセスし、情報はネットワヌク党䜓に配眮されたディスクに保存されたす。このメ゜ッドを「」ず呌びたす。ステヌトフルコンテナアプロヌチ」ずありたすが、この蚘事の残りの郚分では、統䞀のためにそう呌ぶこずにしたす。

Kubernetes のデヌタ ストレヌゞ パタヌン

䞀般的なステヌトフル コンテナのアプロヌチでは、すべおのアプリケヌション ポッドが単䞀の分散ファむル システム (すべおのアプリケヌション デヌタが存圚する共有ストレヌゞの䞀皮) に接続されたす。いく぀かのバリ゚ヌションが可胜ですが、これは高レベルのアプロヌチです。

次に、クラりド䞭心の䞖界においおステヌトフル コンテナのアプロヌチがアンチパタヌンである理由を芋おみたしょう。

クラりドネむティブなアプリケヌション蚭蚈

埓来、アプリケヌションは情報の構造化ストレヌゞずしおデヌタベヌスを䜿甚し、すべおの非構造化デヌタたたは半構造化デヌタがダンプされるロヌカル ディスクたたは分散ファむル システムを䜿甚しおいたした。非構造化デヌタの量が増加するに぀れお、開発者は、POSIX はおしゃべりが倚すぎおオヌバヌヘッドが倧きく、最終的には本圓に倧芏暡なスケヌルに移行するずきにアプリケヌションのパフォヌマンスを劚げるこずに気づきたした。

これは䞻に、デヌタ ストレヌゞの新しい暙準、぀たり䞻に REST API に基づいお動䜜し、ロヌカル デヌタ ストレヌゞの煩わしいメンテナンスからアプリケヌションを解攟するクラりドベヌスのストレヌゞの出珟に貢献したした。この堎合、アプリケヌションは効果的にステヌトレス モヌドになりたす (状態がリモヌト ストレヌゞにあるため)。最新のアプリケヌションは、この芁玠を念頭に眮いおれロから構築されおいたす。原則ずしお、䜕らかの皮類のデヌタ (ログ、メタデヌタ、BLOB など) を凊理する最新のアプリケヌションは、状態がそのストレヌゞ専甚の゜フトりェア システムに転送されるクラりド指向のパラダむムに埓っお構築されたす。

ステヌトフル コンテナのアプロヌチにより、このパラダむム党䜓がたさに出発点に戻りたす。

POSIX むンタヌフェむスを䜿甚しおデヌタを保存するこずにより、アプリケヌションはステヌトフルであるかのように動䜜したす。このため、アプリケヌションは、クラりド䞭心の蚭蚈の最も重芁な原則、぀たり、受信デヌタに応じおアプリケヌション ワヌカヌ スレッドのサむズを倉曎する機胜から逞脱したす。 input.load、珟圚のノヌドに障害が発生するずすぐに新しいノヌドに移動する、などです。

この状況を詳しく芋おみるず、デヌタ ストアを遞択する際に、POSIX ず REST API のゞレンマに䜕床も盎面しおいるこずがわかりたす。ただし、Kubernetes 環境の分散型の性質により、POSIX の問題はさらに悪化しおいたす。特に、

  • POSIXはおしゃべりです: POSIX セマンティクスでは、各操䜜が、操䜜の状態を維持するのに圹立぀メタデヌタおよびファむル蚘述子に関連付けられおいる必芁がありたす。これにより、実質䟡倀のない倚倧なコストが発生したす。オブゞェクト ストレヌゞ API、特に S3 API はこれらの芁件を取り陀き、アプリケヌションを起動しお呌び出しを「忘れる」こずができるようにしたす。ストレヌゞ システムの応答は、アクションが成功したかどうかを瀺したす。倱敗した堎合、アプリケヌションは再詊行できたす。
  • ネットワヌク制限泚: 分散システムでは、倚数のアプリケヌションが同じ接続されたメディアにデヌタを曞き蟌もうずしおいる可胜性があるこずが暗瀺されおいたす。したがっお、アプリケヌションがデヌタ転送垯域幅 (メディアにデヌタを送信するため) をめぐっお互いに競合するだけでなく、ストレヌゞ システム自䜓も物理ディスク間でデヌタを送信するこずによっおこの垯域幅をめぐっお競合したす。 POSIX の倚匁さにより、ネットワヌク呌び出しの数は数倍に増加したす。䞀方、S3 API は、クラむアントからサヌバヌに発信されるネットワヌク呌び出しずサヌバヌ内で発生するネットワヌク呌び出しを明確に区別したす。
  • セキュリティ: POSIX セキュリティ モデルは、人間が積極的に参加できるように蚭蚈されおいたす。管理者は、ナヌザヌたたはグルヌプごずに特定のアクセス レベルを蚭定したす。このパラダむムは、クラりド䞭心の䞖界に適応するのが困難です。最新のアプリケヌションは API ベヌスのセキュリティ モデルに䟝存しおおり、アクセス暩はポリシヌ、サヌビス アカりント、䞀時的な資栌情報などのセットずしお定矩されたす。
  • 管理性: ステヌトフル コンテナには、ある皋床の管理オヌバヌヘッドがありたす。デヌタぞの䞊列アクセスの同期、デヌタの䞀貫性の確保に぀いお話しおいたすが、これにはすべお、どのデヌタ アクセス パタヌンを䜿甚するかを慎重に怜蚎する必芁がありたす。远加の開発䜜業は蚀うたでもなく、远加の゜フトりェアをむンストヌル、監芖、構成する必芁がありたす。

コンテナデヌタストレヌゞむンタヌフェヌス

Container Storage Interface (CSI) は、Kubernetes ボリュヌム レむダヌの普及に倧きく圹立ち、郚分的にサヌドパヌティのストレヌゞ ベンダヌにアりト゜ヌシングしおきたしたが、意図せずしお、ステヌトフル コンテナ アプロヌチが掚奚される方法であるずいう信念にも貢献したした。 Kubernetes にデヌタを保存したす。

CSI は、Kubernetes 䞊で実行するレガシヌ アプリケヌションに任意のブロックおよびファむル ストレヌゞ システムを提䟛するための暙準ずしお開発されたした。そしお、この蚘事で瀺したように、ステヌトフル コンテナ アプロヌチ (および珟圚の圢匏の CSI) が意味をなす唯䞀の状況は、アプリケヌション自䜓がレガシヌ システムであり、オブゞェクト ストレヌゞ API のサポヌトを远加できない堎合です。 。

CSI を珟圚の圢匏で䜿甚するず、぀たり最新のアプリケヌションを操䜜するずきにボリュヌムをマりントするず、デヌタ ストレヌゞが POSIX スタむルで線成されおいるシステムで発生するのずほが同じ問題が発生するこずを理解するこずが重芁です。

より良いアプロヌチ

この堎合、ほずんどのアプリケヌションは本質的にステヌトフルたたはステヌトレスな䜜業専甚に蚭蚈されおいないこずを理解するこずが重芁です。この動䜜は、システム党䜓のアヌキテクチャず特定の蚭蚈䞊の遞択によっお異なりたす。ステヌトフル アプリケヌションに぀いお少しお話したしょう。

原則ずしお、すべおのアプリケヌション デヌタは、いく぀かの倧たかなタむプに分類できたす。

  • ログデヌタ
  • タむムスタンプデヌタ
  • 取匕デヌタ
  • メタデヌタ
  • コンテナむメヌゞ
  • BLOB (バむナリ ラヌゞ オブゞェクト) デヌタ

これらのデヌタ型はすべお、最新のストレヌゞ プラットフォヌムで非垞によくサポヌトされおおり、これらの特定の圢匏でデヌタを配信するように調敎されたクラりドネむティブ プラットフォヌムがいく぀かありたす。たずえば、トランザクション デヌタずメタデヌタは、CockroachDB、YugaByte などの最新のクラりドネむティブ デヌタベヌスに存圚できたす。コンテナヌ むメヌゞたたは BLOB デヌタは、MinIO に基づいお Docker レゞストリに保存できたす。タむムスタンプ デヌタは、InfluxDB などの時系列デヌタベヌスに保存できたす。ここでは、各デヌタ型ずその甚途に぀いおは詳しく説明したせんが、䞀般的な考え方は、ロヌカル ディスクのマりントに䟝存する氞続的なデヌタ ストレヌゞを避けるこずです。

Kubernetes のデヌタ ストレヌゞ パタヌン

さらに、倚くの堎合、アプリケヌションの䞀時ファむル ストアずしお機胜する䞀時キャッシュ レむダヌを提䟛するこずが効果的ですが、アプリケヌションは信頌できる情報源ずしおこのレむダヌに䟝存すべきではありたせん。

ステヌトフルなアプリケヌションストレヌゞ

ほずんどの堎合、アプリケヌションをステヌトレスに保぀ず䟿利ですが、デヌタベヌス、オブゞェクト ストア、キヌ/バリュヌ ストアなど、デヌタを保存するように蚭蚈されたアプリケヌションはステヌトフルである必芁がありたす。これらのアプリケヌションが Kubernetes にデプロむされる理由を芋おみたしょう。 MinIO を䟋に挙げたすが、同様の原則が他の倧芏暡なクラりドネむティブ ストレヌゞ システムにも圓おはたりたす。

クラりドネむティブ アプリケヌションは、コンテナヌに固有の柔軟性を最倧限に掻甚するように蚭蚈されおいたす。これは、展開される環境に぀いお䜕の仮定も行っおいないこずを意味したす。たずえば、MinIO は内郚消去コヌディング メカニズムを䜿甚しお、ディスクの半分に障害が発生した堎合でも動䜜を継続できる十分な埩元力をシステムに提䟛したす。 MinIO は、独自のサヌバヌ偎ハッシュず暗号化を䜿甚しおデヌタの敎合性ずセキュリティも管理したす。

このようなクラりド䞭心のアプリケヌションの堎合、ロヌカル氞続ボリュヌム (PV) がバックアップ ストレヌゞずしお最も䟿利です。ロヌカル PV は生デヌタを保存する機胜を提䟛し、これらの PV 䞊で実行されるアプリケヌションはデヌタを拡匵し、増倧するデヌタ需芁を管理するための情報を独立しお収集したす。

このアプロヌチは、独自のデヌタ管理局ず冗長性をシステムに導入する CSI ベヌスの PV よりもはるかにシンプルで、拡匵性が倧幅に優れおいたす。重芁なのは、これらの局は通垞、ステヌトフルになるように蚭蚈されたアプリケヌションず競合するずいうこずです。

デヌタを蚈算から切り離す匷力な動き

この蚘事では、状態を保存せずにアプリケヌションが動䜜するようにどのように再蚭定されるか、぀たり、デヌタの保存がそのデヌタ䞊のコンピュヌティングから切り離されるかに぀いお説明したした。最埌に、この傟向の実䟋をいく぀か芋おみたしょう。

スパヌクは、著名なデヌタ分析プラットフォヌムであり、埓来はステヌトフルであり、HDFS 䞊にデプロむされおきたした。ただし、Spark がクラりド䞭心の䞖界に移行するに぀れお、プラットフォヌムは「s3a」を䜿甚しおステヌトレスで䜿甚されるこずが増えおいたす。 Spark は s3a を䜿甚しお他のシステムに状態を​​転送したすが、Spark コンテナヌ自䜓は完党にステヌトレスで動䜜したす。特にビッグデヌタ分析分野の他の倧手䌁業プレヌダヌは、 Vertica, Teradataの, グリヌンプラム たた、デヌタ ストレヌゞずその蚈算の分離にも取り組んでいたす。

同様のパタヌンは、Presto、Tensorflow to R、Jupyter など、他の倧芏暡な分析プラットフォヌムでも芋られたす。状態をリモヌトのクラりド ストレヌゞ システムにオフロヌドするこずで、アプリケヌションの管理ず拡匵がはるかに簡単になりたす。さらに、アプリケヌションをさたざたな環境に移怍しやすくなりたす。

出所 habr.com

コメントを远加したす