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
복사