GKE 集群丢失数据

GKE 集群丢失数据

我对 GCP 还不熟悉,所以请原谅我的无知。

我有一个 3 节点 GKE 集群,正在运行数据库应用程序。每个节点都分配有 100GB 标准持久磁盘。但是,我发现偶尔(自 8 月以来至少发生过 3 次)启动时数据会丢失,并且已设置的所有防火墙规则都会重置为默认值。

我可以怎样:

  1. 阻止数据库中的数据被删除
  2. 防止防火墙规则被重置

这是由于基础设施升级吗?

答案1

将此答案发布为社区维基作为问题的基础主题可能会有点宽泛。

请随意扩展它。


为什么GKE集群会丢失数据?

如果没有关于应用程序/工作负载如何在GKE集群上部署的具体信息,就很难查明实际问题。

值得一提的是以下几点:

  • 需要存储数据的工作负载(如数据库)应该使用Persistent Volumes。如果发生节点故障,存储在该节点上的数据PV不会丢失,因为它将存储在不同的实体上。

PersistentVolume资源用于管理集群中的持久存储。在 中GKEPersistentVolume通常由持久磁盘支持。

Cloud.google.com:Kubernetes Engine:文档:概念:持久卷

PVC这里有一份使用持久磁盘和 Cloud SQL 在 GKE 上部署 WordPress 的指南。它可以作为使用(持久磁盘)部署工作负载的示例:

  • 一旦重新创建 pod,存储的Pods未配置数据将会丢失。Volumes

  • 存储在GKE节点启动磁盘上的数据在更新后不会持久保留。

节点虚拟机启动磁盘上的修改在节点重新创建后不会保留. 要在节点重新创建时保留修改,请使用 DaemonSet。

Cloud.google.com:Kubernetes Engine:文档:如何:节点自动升级:概述


针对所提问题

我对 GCP 还不熟悉,所以请原谅我的无知。

GCP我鼓励你去阅读和的官方文档GKE。你会发现有很多信息/指南和示例可供参考:

每个节点都分配有100GB的标准持久磁盘。

这些磁盘专门用作GKE节点的启动盘,不应用作存储数据的地方。您可以使用Persistent Volumes前面提到的方法,也可以选择本地 SSD,您可以通过以下链接了解更多信息:

然而,我发现每次启动时数据都会丢失(自 8 月以来至少发生过 3 次)

GKE集群和节点无法关闭。您可以做的是减少(扩展)节点池中的节点数量。您的意思是连接到它吗?

所有已设置的防火墙规则都将重置为默认值。

您不应重新配置GKE节点的防火墙规则。相反,您应该使用位于Cloud Console(Web UI) -> VPC Network->的 GCP 防火墙Firewall。由于节点升级或故障而重新创建节点将重置防火墙规则。

我可以怎样:

  1. 阻止数据库中的数据被删除
  2. 防止防火墙规则被重置

这是由于基础设施升级吗?

您可以考虑(取决于您的具体用例)使用GCE实例而不是GKE集群。GKE是一个托管的 Kubernetes 集群,旨在运行容器化工作负载,它的某些部分由 Google 管理(例如控制平面)。

至于基础设施升级,您可以通过以下链接查看集群升级时发生的情况:


其他参考:

相关内容