如何在Homelab中使用共享驱动器作为多个Kubernetes PV



我有家庭实验室。Window HostVmware workstation

1 Master Node
3 Worker Nodes

所有节点都挂载了windows驱动器并且可用/external

我想运行多个工具,如jenkins, nexus, nessus等,并希望在外部驱动器中使用持久的卷,这样即使我创建新的EKS集群,卷也会永远留在那里,我可以重用它们

所以我想知道如何最好地使用它

  1. 我可以创建单个hostPathPV,然后每个pod可以从中获取20GB的示例吗
  2. 或者我必须用hostPath为每个pod创建PV然后在pod
  3. 中声明

那么PV和PVC是1:1的关系吗?或者一个PV可以在不同的文件夹中有多个索赔要求?

  1. 如果从相同的主机路径重新创建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,就像本地卷一样,您可以使用这个本地持久化卷静态提供程序。

相关内容

  • 没有找到相关文章

最新更新