Search

Statefulset - Local

Get Node

kubectl get node
Shell
복사

각 노드에 접속 후 폴더 생성

sudo mkdir -p /mnt/common
Shell
복사

Create StatefulSet

--- kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: local-storage provisioner: kubernetes.io/no-provisioner volumeBindingMode: WaitForFirstConsumer --- apiVersion: v1 kind: PersistentVolume metadata: name: pv-statefulset-demo-0 spec: storageClassName: "local-storage" capacity: storage: 2Gi volumeMode: Filesystem accessModes: - ReadWriteOnce claimRef: name: myclaim-statefulset-demo-0-0 namespace: default persistentVolumeReclaimPolicy: Delete hostPath: path: /tmp/k8s-pv-statefulset-demo type: DirectoryOrCreate nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: kubernetes.io/hostname operator: In values: - <NODE_NAME> --- apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: ports: - port: 80 name: web clusterIP: None selector: app: nginx --- apiVersion: apps/v1 kind: StatefulSet metadata: name: statefulset-demo-0 spec: serviceName: "nginx" replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: registry.k8s.io/nginx-slim:0.8 ports: - containerPort: 80 name: web volumeMounts: - name: myclaim mountPath: /usr/share/nginx/html volumeClaimTemplates: - metadata: name: myclaim spec: accessModes: ["ReadWriteOnce"] storageClassName: "local-storage" resources: requests: storage: 1Gi
YAML
복사
kubectl apply -f statefulset-local.yaml
Shell
복사

Pod 내부 shell 접속

kubectl exec -it statefulset-demo-0-0 -- /bin/bash
Shell
복사

마운트된 디렉토리 확인

df -h /usr/share/nginx/html
Shell
복사

테스트 파일 생성

echo "Hello from Kubernetes!" > /usr/share/nginx/html/index.html
Shell
복사

노드에 ssh 접속 후

ls -l /tmp/k8s-pv-statefulset-demo cat /tmp/k8s-pv-statefulset-demo/index.html
Shell
복사