我有一个在裸机上运行的多节点(2)Kubernetes集群。我了解1. hostPath对生产不利,并且2.多节点设置不支持hostPath持久卷。有没有一种方法可以安全地运行由SQLite数据库支持的应用程序?通过NFS,数据库锁定了很多东西,并确实损害了应用程序的性能。
我可能会将每个应用程序的SQLite数据库放在hostPath卷上,然后一切将再次平稳运行。但是我想知道是否有一些解决方法可以做到这一点,即使我必须将应用程序限制在特定的节点上。
答案 0 :(得分:1)
似乎您应该使用本地永久卷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调度到同一节点