kubernetes - 如何将 SQLite 数据库放在 NFS 持久卷之外
问题描述
我有一个在裸机上运行的多节点 (2) Kubernetes 集群。我了解 1. hostPath 对生产不利,2. 多节点设置不支持 hostPath 持久卷。有没有一种方法可以安全地运行由 SQLite 数据库支持的应用程序?在 NFS 上,数据库会锁定很多,并且确实会损害应用程序的性能。
我可能会将每个应用程序的 SQLite 数据库放在 hostPath 卷上,一切都会再次顺利运行。但我想知道是否有一些解决方法可以实现这一点,即使我必须将应用程序限制到特定节点。
解决方案
看来您应该使用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 始终被调度到同一个节点
推荐阅读
- cross-validation - 除了 CFA,还有其他方法可以交叉验证我的模型吗?
- android - 录制音频并同时播放
- ethereum - UniswapV2Router:使用 Nethereum C# 的 INVALID_PATH
- sql - 在日期之间使用多个语句使此查询在一秒钟内运行。但是使用其中一个会使其永远运行
- node.js - 无法从 docker-compose 启动 docker Container - “未知标志:--iidfile”
- javascript - 使用多个加载器时,如何为 .scss 配置我的 webpack?
- reactjs - 将 catch 错误状态从子级发送到父级并显示消息
- primefaces - 像 PrimeFaces 这样的屏幕
- crystal-reports - Crystal Reports 数据仅在刷新后显示
- django - 如果使用 {{}},上下文中传递的变量如何在 html 中转换