我有家庭实验室。Window Host
和Vmware workstation
1 Master Node
3 Worker Nodes
所有节点都挂载了windows驱动器并且可用/external
我想运行多个工具,如jenkins, nexus, nessus等,并希望在外部驱动器中使用持久的卷,这样即使我创建新的EKS集群,卷也会永远留在那里,我可以重用它们
所以我想知道如何最好地使用它
- 我可以创建单个
hostPath
PV,然后每个pod可以从中获取20GB的示例吗 - 或者我必须用
hostPath
为每个pod创建PV然后在pod 中声明
那么PV和PVC是1:1的关系吗?或者一个PV可以在不同的文件夹中有多个索赔要求?
- 如果从相同的主机路径重新创建CLuster和PV,我的数据会在那里吗?
您可以使用local
音量代替hostPath
来试验SC/PVC/PC。首先,创建StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: shared
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
然后在每个节点上配置可用的PersistentVolume,下面是一个节点的示例:
apiVersion: v1
kind: PersistentVolume
metadata:
name: shared-pv-1
spec:
capacity:
storage: 20Gi
volumeMode: Filesystem
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: shared
local:
path: <path to the shared folder>
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- <your node name>
和允许您在pod中挂载已配置卷的声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-pv-1
spec:
storageClassName: shared
volumeMode: Filesystem
resources:
requests:
storage: 20Gi
accessModes:
- ReadWriteOnce
下面是一个挂载卷并写入的示例pod:
apiVersion: v1
kind: Pod
metadata:
name: busybox-1
spec:
restartPolicy: Never
volumes:
- name: shared
persistentVolumeClaim:
claimName: shared-pv-1
containers:
- name: busybox-1
image: busybox
imagePullPolicy: IfNotPresent
volumeMounts:
- name: shared
mountPath: /data
command: ["ash","-c","while :; do echo "$(date)tmessage from busybox-1." >> /data/message.txt; sleep 1; done"]
对于本地卷,默认情况下写入的数据需要手动清理和删除。这对您来说是一个积极的副作用,因为您希望内容持续存在。如果您想进一步实验CSI,就像本地卷一样,您可以使用这个本地持久化卷静态提供程序。