PV는 수동으로 만들고, StatefulSet과 동적으로 연결

2025. 2. 28. 10:57k8s

PV

apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-pv-0
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: zookeeper-storage  # Changed from nfs-storage to zookeeper-storage
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    namespace: kafka
    name: data-zookeeper-0  # Ensures only this PVC binds to this PV
  nfs:
    path: /mnt/nfs/zookeeper-0
    server: <NFS_SERVER_IP>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-pv-1
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: zookeeper-storage
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    namespace: kafka
    name: data-zookeeper-1
  nfs:
    path: /mnt/nfs/zookeeper-1
    server: <NFS_SERVER_IP>
---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: zookeeper-pv-2
spec:
  capacity:
    storage: 5Gi
  accessModes:
    - ReadWriteOnce
  storageClassName: zookeeper-storage
  persistentVolumeReclaimPolicy: Retain
  claimRef:
    namespace: kafka
    name: data-zookeeper-2
  nfs:
    path: /mnt/nfs/zookeeper-2
    server: <NFS_SERVER_IP>

StatefuleSet

apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: zookeeper
  namespace: kafka
spec:
  serviceName: zookeeper
  replicas: 3
  selector:
    matchLabels:
      app: zookeeper
  template:
    metadata:
      labels:
        app: zookeeper
    spec:
      terminationGracePeriodSeconds: 30
      containers:
        - name: zookeeper
          image: confluentinc/cp-zookeeper:latest
          ports:
            - containerPort: 2181
              name: client
          volumeMounts:
            - name: data
              mountPath: /var/lib/zookeeper
  volumeClaimTemplates:
    - metadata:
        name: data
      spec:
        accessModes:
          - ReadWriteOnce
        storageClassName: zookeeper-storage  # Changed from nfs-storage to zookeeper-storage
        resources:
          requests:
            storage: 5Gi