In a Kubernetes cluster where Persistent Volumes (PV) need to be provisioned manually, you can use a single node or distribute them among different Kubernetes nodes. In any case, you need to create the folder(s) in the designated node, and the associated PV should have the affinity configured to match the selected node name.
Create local folders. The following script assumes /data
as the local folder where volumes will be created (distribute them among nodes as needed):
#!/bin/bash
sudo mkdir -p /data/agility-db-a1-pgdata
sudo mkdir -p /data/agility-db-a1-pgwal
sudo mkdir -p /data/agility-db-repo1
sudo mkdir -p /data/agility-minio
sudo mkdir -p /data/data-0-agility-kafka-kafka-0
sudo mkdir -p /data/data-agility-kafka-zookeeper-0
sudo mkdir -p /data/data-agility-kafka-zookeeper-1
sudo mkdir -p /data/data-agility-kafka-zookeeper-2
Create the PV objects using the provided YAML manifests:
storageClassName
, capacity
, accessModes
, hostPath
, and nodeAffinity
configured for each PV.NODE_NAME_HERE
with the actual node name ---
apiVersion: v1
kind: PersistentVolume
metadata:
name: agility-db-a1-pgdata
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/agility-db-a1-pgdata
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: agility-db-a1-pgwal
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/agility-db-a1-pgwal
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: agility-db-repo1
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/agility-db-repo1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: agility-minio
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 50Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/agility-minio
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-0-agility-kafka-kafka-0
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/data-0-agility-kafka-kafka-0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-agility-kafka-zookeeper-0
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/data-agility-kafka-zookeeper-0
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-agility-kafka-zookeeper-1
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/data-agility-kafka-zookeeper-1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
---
apiVersion: v1
kind: PersistentVolume
metadata:
name: data-agility-kafka-zookeeper-2
labels:
type: local
spec:
storageClassName: local-storage
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /data/data-agility-kafka-zookeeper-2
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- NODE_NAME_HERE
Please refer to the Kubernetes documentation for more information on persistent volumes and configuring the PV objects