1

3 つのレプリカを持つ Kubernetes デプロイ アプリがあり、レプリカごとに7 GB のストレージが必要です。新しい空のazureDiskストレージをアタッチして、このデプロイで作成された各ポッド/レプリカにマウントできるようにしたいと考えています。

基本的に、次の制限があります。

  • Statefulset ではなく、Deployment を使用する必要があります
  • ポッドが停止し、新しいポッドが起動するたびに、状態がなくなり、新しい空の azureDisk がアタッチされます。
  • ポッドはストレージを共有せず、各ポッドには独自の 7 GB ストレージがあります。
  • オンデマンドで 7 GB のストレージが必要なため、ポッドは azureDisk を使用する必要があります。つまり、デプロイ レプリカをスケーリングするときに azureStorage を動的に作成します。

azureDisk を使用する場合、アクセス モード タイプ ReadWriteOnce で使用する必要があり (ドキュメントに記載されているように)、このディスクにポッドが 1 つだけ接続されますが、これはポッドが 1 つある場合にのみ機能します。複数のポッド、同じクレームを使用することはできません...最初のクレームのように、より多くのストレージを動的に要求する方法はありますか?

注 1: volumeClaimTemplates があることは知っていますが、それは Statefulset にのみ関連しています。

注 2: ポッドが 100 回再起動されてもかまいません。これにより、100 PV が作成され、1 つだけが使用されます。問題ありません。

4

2 に答える 2

1

StatefulSet を使用する必要がある理由はわかりませんが、これを行う唯一の方法は、アプリケーション用に独自のオペレーターを作成することです。オペレーターには、 ReplicaSetと同様にポッドを管理するコントローラーがありますが、インスタンス化された新しいポッドごとに新しい PVC が作成される点が異なります。

StatefulSet でアプリケーションを実行する方法を理解し、VolumeClaimTemplatesを使用する方がよい場合があります。

✌️

于 2020-08-12T01:45:38.583 に答える