728x90
반응형
출처
1) Cloud Native DevOps with Kubernetes / 쿠버네티스를 활용한 클라우드 네이티브 데브옵스
볼륨
1) 컨테이너가 데이터를 저장하고 공유하는 방법을 제공
2) 컨테이너는 기본적으로 임시 저장소를 사용하며, 컨테이너가 재시작되면 데이터가 사라질 수 있음
3) 볼륨을 사용하면 데이터를 지속적으로 저장할 수 있음
볼륨의 종류
1) emptyDir: 컨테이너가 Pod에 배포될 때 생성되며, Pod가 삭제될 때 삭제됨
2) hostPath: 호스트 파일 시스템의 특정 디렉토리를 컨테이너와 공유. 일반적으로 프로덕션 환경에서는 사용을 권장하지 않음
3) PVC: 필요한 스토리지 리소스를 선언, 이를 통해 데이터의 영속성을 보장할 수 있음
4) awsElasticBlockStore: AWS의 EBS 볼륨을 사용하는 쿠버네티스 볼륨
hostPath
#volume 설정 추가 [root@]$ vi applyfyml.yaml apiVersion: v1 kind: Pod metadata: labels: run: applyfyml name: applyfyml spec: containers: - name: applyfyml image: nginx volumeMounts: - mountPath: /po-volume #pod에 위치될 볼륨의 경로 name: container-volume #아래에 명시한 볼륨명을 똑같이 작성 nodeSelector: disktype: ssd volumes: #볼륨명, 로컬 리눅스 서버의 디렉토리 위치 작성 - name: container-volume hostPath: path: /home/imfra/volume type: Directory |
# 볼륨 마운트 확인 [root@]$ ls -al /home/imfra/volume total 12 drwxr-xr-x 2 imfra imfra 4096 Aug 23 13:45 . drwxr-x--- 5 imfra imfra 4096 Aug 23 13:45 .. -rw-r--r-- 1 imfra imfra 14 Aug 23 13:45 hostPathTest [root@]$ kubectl exec applyfyml -- ls -al /po-volume total 12 drwxr-xr-x 2 1000 1000 4096 Aug 23 04:45 . drwxr-xr-x 1 root root 4096 Aug 23 04:44 .. -rw-r--r-- 1 1000 1000 14 Aug 23 04:45 hostPathTest |
PVC 생성
쿠버네티스에서 데이터를 지속적으로 관리하고, 스토리지를 동적으로 프로비저닝하는 데 중요함
PVC를 사용하여 스토리지 요구 사항을 명확하게 정의하고, 클러스터 내에서 스토리지 자원을 효율적으로 관리할 수 있음
#PVC yaml 파일 작성 [root@]$ vi pvc-sample.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-sample #PVC이름 namespace: default #PVC가 생성될 네임스페이스 spec: accessModes: - ReadWriteOnce #PVC의 접근 모드를 정의 (ReadWriteOnce, ReadOnlyMany, ReadWriteMany) resources: requests: storage: 1Gi #요청할 스토리지 크기 storageClassName: standard #사용할 StorageClass (선택적) |
#PVC 생성 [root@]$ kubectl apply -f pvc-sample.yaml persistentvolumeclaim/pvc-sample created |
#PVC 상태 조회 [root@]$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-sample Pending standard 45s #PVC 상세 정보 및 상태 조회 [root@]$ kubectl describe pvc pvc-sample Name: pvc-sample Namespace: default StorageClass: standard Status: Pending Volume: Labels: <none> Annotations: kubectl.kubernetes.io/last-applied-configuration: {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"pvc-sample","namespace":"default"},"spec":{"accessM... Finalizers: [kubernetes.io/pvc-protection] Capacity: Access Modes: VolumeMode: Filesystem Mounted By: <none> Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning ProvisioningFailed 13s (x6 over 79s) persistentvolume-controller storageclass.storage.k8s.io "standard" not found |
PVC 마운트
#volume 설정 추가 [root@]$ vi applyfyml.yaml apiVersion: v1 kind: Pod metadata: labels: run: applyfyml name: applyfyml spec: containers: - name: applyfyml image: nginx volumeMounts: - mountPath: /po-volume #pod에 위치될 볼륨의 경로 name: container-volume #아래에 명시한 볼륨명을 똑같이 작성 nodeSelector: disktype: ssd volumes: #볼륨이름, PVC이름 작성 - name: container-volume persistentVolumeClaim: claimName: pvc-sample |
728x90
반응형
'클라우드 > 쿠버네티스' 카테고리의 다른 글
[쿠버네티스] Container Runtime Interface (CRI) (0) | 2024.09.16 |
---|---|
[클라우드/쿠버네티스] initContainers (1) | 2024.09.11 |
[클라우드/쿠버네티스] 라벨, 노드셀렉터 (0) | 2024.08.23 |
[클라우드/쿠버네티스] Pod 구조 (0) | 2024.08.20 |
[클라우드/쿠버네티스] kubectl 명령어 정리 (0) | 2024.08.15 |
댓글