我已将Gitlab部署到具有持久性存储的Azure kubernetes集群中,其定义方式如下:
kind: PersistentVolume apiVersion: v1 metadata: name: gitlab-data namespace: gitlab spec: capacity: storage: 8Gi accessModes: - ReadWriteMany hostPath: path: "/tmp/gitlab-data"
几天运作良好。突然我存储在Gitlab中的所有数据都消失了,我也不知道为什么。我以为已hostPath
定义的PersistentVolumen确实是持久性的,因为它保存在节点上并以某种方式复制到所有现有节点。但是我的数据现在丢失了,我不知道为什么。我查询了每个节点的正常运行时间,没有重新启动。我登录到节点并检查了路径,据我所知数据已消失。
那么PersistentVolume Mounts在Kubernetes中如何工作?所保存的数据是否真的持久存在于节点上?如果将部署拆分为多个节点,多个节点如何共享数据?是hostPath
可靠的持久存储吗?
hostPath
不会在节点之间共享或复制数据,并且一旦您的pod在另一个节点上启动,数据就会丢失。您应该考虑使用一些外部共享存储。
以下是官方文档中的相关报价:
HostPath(仅用于单节点测试–不以任何方式支持本地存储,并且在多节点群集中将不起作用)
来自kubernetes.io/docs/user-guide/persistent-volumes/