MongoDBやMySQLなどのデータベースにStatefulSetの代わりにHelmデプロイメントを使用するとどのような影響がありますか?


7

ステートレスアプリの定義は、 MongoDBやMySQLなどのデータベースサーバーに適用されるようです。Helm Chartsは、Kubernetesのテンプレートリポジトリの一種として見つかりました。ただし、安定ビルドはすべてのデプロイメントを使用します。安定した状態で提供されないインキュベーター内のみ。

DBサーバーにDeploymentを使用するとどのような影響がありますか?

たとえば、クラスターで複数のインスタンスを実行しているときに、同期/レプリケーションの問題などの問題はありますか?

背景:フェイルオーバークラスターでMongoDBを実行したいので、少なくとも2つのインスタンスが実行されています。

回答:


5

KubernetesがK8s v1.5で新しいStatefulSet機能を発表したとき(古いPetSet名前から変換)、その使用例を紹介する非常に優れたブログ投稿を公​​開しました:https : //kubernetes.io/blog/2016/ 12 / statefulset-run-scale-stateful-applications-in-kubernetes /

最初の段落には、常に私の心に残っていた差別化機能の本当に良い説明があります:

...セット内のポッドのデプロイ用の「インデックスごとに最大1つのポッド」。注文された導入、注文された終了、一意のネットワーク名、および永続的な安定したストレージに加えて...

重要なものを分解します。

一意のネットワーク名

デプロイでは、どのポッドも作業を取得できるはずなので、ネットワーク名は重要ではありません。ただし、ステートフルクラスターのようなものを実行している場合、「マスター」と「スレーブ」の概念があるかもしれません。この一意のネットワーク命名により、予測可能な増分名で特定のポッドを参照することにより、区別を保つことができます。

注文された終了

これは、ステートフルクラスターでの再デプロイメントにとって重要です。重要なマシンが長時間稼働し続ける必要がある場合があるためです。コーディネーターまたは「リーダー」ノードがある場合は、それらを最後に再起動する必要があります。StatefulSetsを使用すると、これを行うことができます。リンクされたブログ投稿には、この例も示されています。

永続的な安定したストレージ

間違いなく、これは最も重要な違いです。デフォルトでは、StatefulSetはストレージを保持します。Kubernetesは、StatefulSetに接続されていたストレージを自動的に削除しませ。デプロイメントでも同じことできますが、デフォルトではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.