Notice
Recent Posts
Recent Comments
Link
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Tags
more
Archives
Today
Total
관리 메뉴

클라우드 엔지니어 꿈나무

Kubernetes Storage : Persistent Volume & Claim - Centos7 본문

kubernetes

Kubernetes Storage : Persistent Volume & Claim - Centos7

새싹싹이 2023. 9. 17. 19:55

 

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