클라우드 배우기
Kubernetes Storage : Persistent Volume & Claim - Centos7 본문
Container가 종료되면 그 안에 저장된 데이터도 함께 소멸. 즉, Container 문제가 생길 경우, Container 재시작 또는, 재생성하면 되지만 그 안에 데이터 보존이 어려움. -> Volume 추상화로 상기의 문제 해결
PV(Persistent Volume)와 PVC(Persistent Volume Claim)
PVC
애플리케이션에서 지속적인 스토리지를 사용하거나 데이터를 공유하는 데 용이하며, 클러스터 관리자는 스토리지 리소스를 효율적으로 관리 가능
POD의 상관없이 PV 지정 및 사용 가능하며 운영 방식에 따라 자유롭게 사용
PVC
사용자가 Volume에 요정하는 방식을 정의하며 POD와 PV 간의 의존성을 낮춤
실습
pv와 pvc를 이용하여 nginx와 httpd로 pod 생성
mkdir /pvtest
cat > /pvtest/index.html << EOF
scp -r /pvtest/index.html root@10.0.0.1:/
scp -r /pvtest/index.html root@10.0.0.2:/
scp -r /pvtest/index.html root@10.0.0.3:/
각각의 노드에서 하기와 같이 pvtest 확인 가능
vi pv.yml : pv yml 파일 생성
kubectl apply -f pv.yml : pv.yml 파일 실행
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
storageClassName: pvset
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/pvtest"
vi pvc.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc
spec:
storageClassName: pvset
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
kubectl apply -f pvc.yml
vi pod.yml
apiVersion: v1
kind: Pod
metadata:
name: pv-pod-nginx
labels:
app: prod
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pvc
containers:
- name: pv-nginx
image: nginx
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/share/nginx/html"
name: pv-storage
---
apiVersion: v1
kind: Pod
metadata:
name: pv-pod-httpd
labels:
app: prod
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pvc
containers:
- name: pv-httpd
image: httpd
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
volumeMounts:
- mountPath: "/usr/local/apache2/htdocs"
name: pv-storage
yml 파일 참고
kubectl expose svc pod pv-pod-httpd --type=NodePort
kubectl expose svc pod pv-pod-nginx --type=NodePort
인터넷창
10.0.0.1:30614 / 10.0.0.2:30614 / 10.0.0.3:30614 / 10.0.0.1:30614 입력 시, 하기와 같은 창 출력
10.0.0.1:30614 / 10.0.0.2:30614 / 10.0.0.3:30614 / 10.0.0.1:30614 입력 시, 하기와 같은 창 출력
'kubernetes' 카테고리의 다른 글
Kubernetes AutoScaling - Centos7 (0) | 2023.09.22 |
---|---|
Kubernetes(K8S) Ingress - Centos7 (0) | 2023.09.18 |
Kubernetes(K8S) LoadBalance (metallb) - Centos7 (0) | 2023.09.17 |
Kubernetes(K8S) Volume - Centos7 (0) | 2023.09.17 |
Kubernetes(K8S) Labels - Centos7 (0) | 2023.09.17 |