【发布时间】:2026-01-17 11:10:02
【问题描述】:
我是 Kubernetes 领域的新手,我试图弄清楚如何将 StatefulSet 中定义的 volumeClaim 或 volumeClaimTemplates 链接到特定的 PersistentVolume。
我已经按照一些教程来了解和设置本地 PersistentVolume。如果我以 Elasticsearch 为例,当 StatefulSet 启动时,PersistantVolumeClaim 会绑定到 PersistantVolume。
如您所知,对于本地 PersistentVolume,我们必须定义存储目标的本地路径。
对于 Elasticsearch,我已经定义了类似的东西
local:
path: /mnt/kube_data/elasticsearch
但在实际项目中,存在不止一个持久性卷。因此,我将在路径 /mnt/kube_data 中有多个文件夹。 Kubernetes 如何为持久卷声明选择正确的持久卷?
我不希望 Kubernetes 将数据库数据放在为另一个服务创建的持久卷中。
这是 Elasticsearch 的配置:
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
name: elasticsearch-sts
spec:
serviceName: elasticsearch
replicas: 1
[...]
containers:
- name: elasticsearch
image: docker.elastic.co/elasticsearch/elasticsearch:6.4.2
volumeMounts:
- name: elasticsearch-data
mountPath: /usr/share/elasticsearch/data
volumeClaimTemplates:
- metadata:
name: elasticsearch-data
spec:
accessModes: [ "ReadWriteOnce" ]
storageClassName: local-storage
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-elasticsearch
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /mnt/elasticsearch
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: node-role.kubernetes.io/master
operator: Exists
---
【问题讨论】:
标签: kubernetes persistent-volumes persistent-volume-claims