我有一个在 Azure aks (kubernetes) 集群中作为服务运行的应用程序。此应用程序从数据库中提取数据并将其放入文件中。
据我所知,我首先需要创建一个 docker 镜像并将其推送到 Azure aks 注册表。完成后,我需要创建一个 pod 并将此应用程序作为服务运行。
我的问题是 -
a) 我需要使用什么 Azure 或 docker 选项来存储数据,以便如果 pod 崩溃、删除或在另一个节点上重新安排,数据不会被删除(移除),并且一旦文件创建,数据仍然在文件中可用。
b) 在互联网上搜索后,我发现我可以使用 kubectl 命令静态或动态创建 Azure 持久磁盘或文件存储。但我不明白的是 - 使用 kubectl apply -f 创建持久存储后,如何使用 Azure 磁盘存储?
我是否需要修改 dockerfile 并指定挂载路径(卷?)并在应用程序中指定挂载路径(例如 /mnt/app-data),应用程序可以在其中将数据写入文件。
虽然可能存在将数据存储在 aks 集群中的标准机制,但我对此还有些陌生,并期待专家的建议,如何在 Azure 中创建和使用存储(准确地说是 aks 集群),以便应用程序将数据写入其中。
答案1
在 Kubernetes 中保存数据(无论是 AKS 还是其他实现)都需要您考虑使用持久卷。这是 Kubernetes 中的一个概念,然后由您选择的提供商中的特定存储资源支持,例如在 Azure 中,这是 Azure Disk 或 Azure Files。
首先,我建议您评估您的应用,并确定是否确实需要将数据持久存储在 pod 中。从弹性和 DR 的角度来看,无状态可以让您在使用 Kubernetes 时轻松很多。例如,您是否可以将数据库(在 AKS 之外运行)作为事实来源,并让应用程序每次运行时都下载数据?
如果你确实需要存储这些数据,那么你需要考虑将持久卷附加到你的 pod,并在 Docker 文件中将其指定为卷。这里有一篇关于存储工作原理和设置方法的详细教程这里。