【问题标题】:How to place SQLite database outside of NFS Persistent Volume如何将 SQLite 数据库放在 NFS 持久卷之外
【发布时间】:2019-09-20 14:22:14
【问题描述】:

我有一个在裸机上运行的多节点 (2) Kubernetes 集群。我知道 1. hostPath 对生产不利,2. 多节点设置不支持 hostPath 持久卷。有没有一种方法可以安全地运行由 SQLite 数据库支持的应用程序?在 NFS 上,数据库会锁定很多,并且确实会损害应用程序的性能。

我可能会将每个应用程序的 SQLite 数据库放在 hostPath 卷上,然后一切都会再次顺利运行。但我想知道是否有一些解决方法可以实现这一点,即使我必须将应用程序限制到特定节点。

【问题讨论】:

  • 听起来像 postgres 这样的客户端-服务器风格 DBM 可能更适合您的需求。
  • 我完全同意你的看法。这可能是正确的方法。唯一的问题是镜像中的那些应用程序不支持切换后端数据库的类型。我可能最终会在这里被淹没,但目前我会尝试在特定节点上获取本地持久卷。

标签: kubernetes sqlite nfs persistent-volumes


【解决方案1】:

看来您应该使用 Local Persistent Volumes GA

根据文档:

本地卷表示已安装的本地存储设备,例如磁盘、分区或目录。

与 hostPath 卷相比,本地卷可以以持久且可移植的方式使用,而无需手动将 Pod 调度到节点,因为系统通过查看 PersistentVolume 上的节点亲和性来了解卷的节点约束。

但是:

在 GA,本地持久卷不支持动态卷配置。

更多信息您可以找到herehere

举个例子:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: example-pv
spec:
  capacity:
    storage: 100Gi
  # volumeMode field requires BlockVolume Alpha feature gate to be enabled.
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Delete
  storageClassName: local-storage
  local:
    path: /mnt/disks/ssd1
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
          - example-node

使用本地持久卷,Kubernetes 调度程序确保使用本地持久卷的 pod 总是被调度到同一个节点

【讨论】:

  • “GA”是什么意思?你引用它的方式,它听起来像公司名称。
  • 如上面提供的链接中所述generally available, stable
  • 谢谢!但是请注意,提供的两个链接都不包含“普遍可用”的字样,只有 GA 无处不在,这就是我问的原因。
猜你喜欢
  • 1970-01-01
  • 2018-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-03-24
  • 2021-01-30
  • 1970-01-01
  • 2017-09-03
相关资源
最近更新 更多