azure - PersistentVolume 如何与 hostPath 配合使用?

标签 azure gitlab kubernetes

我已将 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 定义的 PercientVolumen 确实是持久的,因为它保存在节点上并以某种方式复制到所有现有节点。但我的数据现在丢失了,我不知道为什么。我查看了每个节点的正常运行时间,没有重启。我登录到节点并检查路径,据我所知,数据已经消失。

那么持久卷挂载在 Kubernetes 中是如何工作的呢?保存的数据真的持久在节点上吗?如果部署拆分到多个节点,多个节点如何共享数据? hostPath 持久存储可靠吗?

最佳答案

hostPath 不会在节点之间共享或复制数据,一旦您的 pod 在另一个节点上启动,数据就会丢失。您应该考虑使用一些外部共享存储。

以下是官方文档中的相关引用:

HostPath (single node testing only – local storage is not supported in any way and WILL NOT WORK in a multi-node cluster)

来自kubernetes.io/docs/user-guide/persistent-volumes/

关于azure - PersistentVolume 如何与 hostPath 配合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41813513/

相关文章:

sql - Azure 数据工厂中的复制数据事件后更新

python - python SDK如何将类类型转换为字符串

c# - Azure WebJob 最佳方法

docker - 在 Gitlab CI 上更改 Xdebug 模式 PHP Docker

docker - GitLab 部署 token 在 EC2 Ubuntu 18.04 AMI 上失败,其他任何地方都没有

amazon-web-services - 避免每个节点的 AWS EKS IP 限制

amazon-web-services - kubectl 错误 您必须登录到服务器(未经授权) - EKS 集群

apache-spark - Apache Spark:核心与执行者

c# - 有没有办法按事件触发数据湖分析作业?

docker - 无法连接到我的 GitLab CI 管道中的 Docker 守护进程