我正在使用 winston js 进行节点 js 应用程序日志记录。我正在 GKE 上部署我的 dockerized 应用程序,并希望将我的文件存储在容器之外。我应该在哪里存储这些文件以及应该安装什么路径。
我对 kubernetes 卷很陌生,找不到合适的教程。
我正在使用 winston js 进行节点 js 应用程序日志记录。我正在 GKE 上部署我的 dockerized 应用程序,并希望将我的文件存储在容器之外。我应该在哪里存储这些文件以及应该安装什么路径。
我对 kubernetes 卷很陌生,找不到合适的教程。
有多个选项要做或遵循,现在首先为什么要将日志存储在文件中?
您可以将日志推送到 GCP 的堆栈驱动程序服务,您的日志将存储在那里,在这种情况下,无需使用任何卷或额外的配置。
堆栈驱动程序日志记录是托管服务,您可以搜索日志并从所有容器推送日志。这样,您的服务将是无状态的,您无需为部署配置卷。由于容器或 POD 在集群内运行是无状态的,因此您也可以轻松扩展应用程序。
不过,如果您打算使用该卷,则有很多选项,如下所述:
使用节点体积:
在此容器中,将在其运行的 Node 卷内创建日志文件。
示例:https ://kubernetes.io/docs/concepts/storage/volumes/#hostpath
缺点:
使用 PVC 磁盘:
如果您将使用磁盘将日志存储很长时间(例如 30-40 天),它将起作用。
您在 K8s 中创建 POD 将使用的卷,POD 可以使用此卷来创建文件和存储,除非您这样做,否则它不会从该磁盘中删除。
示例:https ://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes
缺点:
NFS 和 EFS
如果您计划将所有副本或 POD 日志存储在 K8s 中,则必须使用 ReadWriteMany 访问模式。
对于ReadWriteMany选项,您可以使用任何NFS服务或GCP EFS服务。
在这种情况下,您的所有 POD 都将写入单卷 NFS 或 EFS 系统,并且日志将保存在那里,但需要额外的配置。
额外:
最好的选择是将日志推送到堆栈驱动程序,而无需在许多日志配置期间,您可以在那里管理保留期。只需开始从应用程序容器推送日志,您就可以无缝扩展副本。