
Azure aks (kubernetes) クラスターでサービスとして実行されるアプリケーションがあります。このアプリケーションは、データベースからデータを取得してファイルに格納します。
私の理解では、まず Docker イメージを作成し、それを Azure aks レジストリにプッシュする必要があります。これが完了したら、ポッドを作成し、このアプリケーションをサービスとして実行する必要があります。
私が疑問に思っているのは、
a) ポッドがクラッシュしたり、別のノードで削除または再スケジュールされたりした場合にデータが削除 (除去) されず、ファイルの作成後はデータがファイル内で引き続き使用可能になるように、データを保存するにはどの Azure または Docker オプションを使用する必要がありますか。
b) インターネットで検索すると、kubectl コマンドを使用して静的または動的に作成することで、Azure 永続ディスクまたはファイル ストレージを使用できるようです。ただし、理解できないのは、kubectl apply -f を使用して永続ストレージを作成した後、Azure ディスク ストレージをどのように利用すればよいかということです。
dockerfile を変更してマウント パス (ボリューム?) を指定し、アプリケーションがファイルにデータを書き込むことができるアプリケーション内のマウント パス (例: /mnt/app-data) も指定する必要がありますか。
aks クラスターにデータを格納するための標準的なメカニズムがあるかもしれませんが、私はその点についてあまり詳しくないので、アプリケーションがデータを書き込むために Azure (正確には aks クラスター) にストレージを作成して使用する方法について専門家のアドバイスを期待しています。
答え1
Kubernetes でデータを永続化するには (AKS か別の実装かに関係なく)、永続ボリュームの使用を検討する必要があります。これは Kubernetes の概念であり、選択したプロバイダーの特定のストレージ リソースによってサポートされます。たとえば、Azure では Azure Disk または Azure Files です。
まず、アプリを評価して、実際にポッドにデータを永続的に保存する必要があるかどうかを判断することをお勧めします。ステートレスにすると、回復力と DR の観点から Kubernetes を操作するときに作業が大幅に簡単になります。たとえば、データベース (AKS の外部で実行) を信頼できるソースにして、アプリケーションが実行されるたびにデータをダウンロードするようにすることはできますか?
このデータを保存する必要がある場合は、ポッドに永続ボリュームを接続し、これをDockerファイルでボリュームとして指定する必要があります。ストレージの仕組みと設定方法については、わかりやすい説明があります。ここ。