Kubernetes は高速です 業界標準になりつつあり、最大 94% 調査によると、コンテナ オーケストレーション プラットフォームにサービスとアプリケーションを展開している組織の割合。 企業が Kubernetes を導入する主な理由の 1 つは標準化です。標準化により、上級ユーザーは生産性が最大 2 倍向上します。
Kubernetes で標準化することで、組織はあらゆるワークロードをどこにでもデプロイできるようになります。 しかし、欠けている部分がありました。テクノロジーは、ワークロードが一時的であると想定していました。つまり、ステートレスなワークロードのみが Kubernetes に安全にデプロイできるということです。 しかし、コミュニティは最近パラダイムを変更し、Kubernetes でのデータの使用を可能にする StatefulSets や Storage Classes などの機能をもたらしました。
Kubernetes でステートフル ワークロードを実行することは可能ですが、それでもまだ困難です。 この記事では、それを実現する方法と、その価値がある理由を説明します。
漸進的に行う
Kubernetes は、Linux と同じくらい普及しつつあり、任意のアプリケーションをどこでも分散方式で実行する事実上の方法になっています。 Kubernetes を使用するには、多くの技術的な概念と語彙を学ぶ必要があります。 たとえば、初心者は、コンテナー、ポッド、ノード、クラスターなどの多くの Kubernetes 論理ユニットに苦労する可能性があります。
まだ本番環境で Kubernetes を実行していない場合は、データ ワークロードに直接飛び込まないでください。 代わりに、ステートレス アプリケーションの移行から始めて、事態が横方向に進んだときにデータが失われないようにします。
ニーズに合ったオペレーターが見つからなくても、心配する必要はありません。それらのほとんどはオープンソースです。
制限と特異性を理解する
Kubernetes の一般的な概念に慣れたら、ステートフルな概念の詳細に進みます。 たとえば、アプリケーションには、パフォーマンスや容量の要件など、さまざまなストレージ ニーズがある場合があるため、適切な基盤となるストレージ システムを提供する必要があります。
業界で一般的にストレージ「プロファイル」と呼ばれるものは、Kubernetes ではストレージ クラスと呼ばれます。 これらは、Kubernetes クラスターがアクセスできるさまざまなタイプのクラスを記述する方法を提供します。 ストレージ クラスは、GiB ごとの 1 秒あたりの I/O 操作、バックアップ ポリシー、またはバインド モードや許可されたトポロジなどの任意のポリシーなど、さまざまなサービス品質レベルを持つことができます。
理解すべきもう 1 つの重要なコンポーネントは StatefulSet です。 これは、ステートフル アプリケーションを管理するために使用される Kubernetes API オブジェクトであり、次のような主要な機能を提供します。
- ボリュームを追跡し、好きなように切り離して再接続できる、安定した一意のネットワーク識別子。
- データを安全に保つための安定した永続的なストレージ。
- 多くの Day 2 オペレーションに必要な、秩序立った適切なデプロイとスケーリング。
StatefulSet は、悪名高い PetSet (現在は非推奨) の代替として成功していますが、まだ不完全であり、制限があります。 たとえば、StatefulSet コントローラには ボリューム (PVC) のサイズ変更の組み込みサポートなし — アプリケーション データ セットのサイズが、現在割り当てられているストレージ容量を超えようとしている場合、これは大きな課題です。 がある 回避策、しかし、そのような制限は、エンジニアリングチームがそれらを処理する方法を知るために、事前に十分に理解する必要があります.