
我有一個應用程式作為服務在 Azure aks (kubernetes) 叢集中運行。該應用程式從資料庫中提取資料並將其放入文件中。
據我了解,我首先需要建立一個 docker 映像並將其推送到 Azure aks 註冊表。完成此操作後,我需要建立一個 Pod 並將該應用程式作為服務運行。
我的問題是 -
a) 我需要使用什麼 Azure 或 docker 選項來儲存數據,以便在 pod 崩潰或刪除或在另一個節點上重新排程時資料不會被刪除(刪除),並且建立檔案後資料在檔案中仍然可用。
b) 在互聯網上搜索,我似乎可以透過使用 kubectl 命令靜態或動態建立 Azure 持久化磁碟或檔案儲存體來使用它。然而,我不明白的部分是 - 使用 kubectl apply -f 創建持久性儲存後如何使用天藍色磁碟儲存?
我是否需要修改 dockerfile 並指定安裝路徑(磁碟區?),並指定應用程式中的安裝路徑(例如 /mnt/app-data),應用程式可以將資料寫入檔案。
雖然可能有標準機制將資料儲存在 aks 叢集中,但我對此有些陌生,並期待專家建議如何在 Azure(準確地說是 aks 叢集)中建立和使用存儲,以便應用程式向其寫入資料。
答案1
在 Kubernetes 中持久保存資料(無論是 AKS 還是其他實作)將要求您考慮使用持久性磁碟區。這是 Kubernetes 中的一個概念,然後由您選擇的提供者中的特定儲存資源提供支持,例如在 Azure 中,這是 Azure 磁碟或 Azure 檔案。
首先,我建議您評估您的應用程式並確定您是否確實需要在 pod 中持久儲存資料。從彈性和災難復原的角度來看,無狀態使您使用 Kubernetes 時的生活變得更加輕鬆。例如,您能否將資料庫(在 AKS 之外運行)作為事實來源,並讓應用程式在每次運行時下載資料?
如果您確實需要儲存此數據,那麼您需要考慮將持久性磁碟區附加到 Pod,並將其指定為 Docker 檔案中的磁碟區。很好地介紹了儲存的工作原理以及如何設定它這裡。