我对 GCP 还不熟悉,所以请原谅我的无知。
我有一个 3 节点 GKE 集群,正在运行数据库应用程序。每个节点都分配有 100GB 标准持久磁盘。但是,我发现偶尔(自 8 月以来至少发生过 3 次)启动时数据会丢失,并且已设置的所有防火墙规则都会重置为默认值。
我可以怎样:
- 阻止数据库中的数据被删除
- 防止防火墙规则被重置
这是由于基础设施升级吗?
答案1
将此答案发布为社区维基作为问题的基础主题可能会有点宽泛。
请随意扩展它。
为什么GKE
集群会丢失数据?
如果没有关于应用程序/工作负载如何在GKE
集群上部署的具体信息,就很难查明实际问题。
值得一提的是以下几点:
- 需要存储数据的工作负载(如数据库)应该使用
Persistent Volumes
。如果发生节点故障,存储在该节点上的数据PV
不会丢失,因为它将存储在不同的实体上。
PersistentVolume
资源用于管理集群中的持久存储。在 中GKE
,PersistentVolume
通常由持久磁盘支持。
PVC
这里有一份使用持久磁盘和 Cloud SQL 在 GKE 上部署 WordPress 的指南。它可以作为使用(持久磁盘)部署工作负载的示例:
一旦重新创建 pod,存储的
Pods
未配置数据将会丢失。Volumes
存储在
GKE
节点启动磁盘上的数据在更新后不会持久保留。
节点虚拟机启动磁盘上的修改在节点重新创建后不会保留. 要在节点重新创建时保留修改,请使用 DaemonSet。
针对所提问题
我对 GCP 还不熟悉,所以请原谅我的无知。
GCP
我鼓励你去阅读和的官方文档GKE
。你会发现有很多信息/指南和示例可供参考:
每个节点都分配有100GB的标准持久磁盘。
这些磁盘专门用作GKE
节点的启动盘,不应用作存储数据的地方。您可以使用Persistent Volumes
前面提到的方法,也可以选择本地 SSD,您可以通过以下链接了解更多信息:
然而,我发现每次启动时数据都会丢失(自 8 月以来至少发生过 3 次)
GKE
集群和节点无法关闭。您可以做的是减少(扩展)节点池中的节点数量。您的意思是连接到它吗?
所有已设置的防火墙规则都将重置为默认值。
您不应重新配置GKE
节点的防火墙规则。相反,您应该使用位于Cloud Console
(Web UI) -> VPC Network
->的 GCP 防火墙Firewall
。由于节点升级或故障而重新创建节点将重置防火墙规则。
我可以怎样:
- 阻止数据库中的数据被删除
- 防止防火墙规则被重置
这是由于基础设施升级吗?
您可以考虑(取决于您的具体用例)使用GCE
实例而不是GKE
集群。GKE
是一个托管的 Kubernetes 集群,旨在运行容器化工作负载,它的某些部分由 Google 管理(例如控制平面)。
至于基础设施升级,您可以通过以下链接查看集群升级时发生的情况:
其他参考:
- Kubernetes.io
- Cloud.google.com:SQL<-
DB
在 GCP 中运行的替代解决方案