首页 > 解决方案 > 如何将 SQLite 数据库放在 NFS 持久卷之外

问题描述

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

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

标签: kubernetessqlitenfspersistent-volumes

解决方案


看来您应该使用Local Persistent Volumes GA

根据文档:

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

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

然而:

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

您可以在此处此处找到更多信息。

举个例子:

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 始终被调度到同一个节点


推荐阅读