Ssoon
[2주차] CHAPTER-10 쿠버네티스 스토리지 본문
이정훈님이 집필하신 "24단계 실습으로 정복하는 쿠버네티스" 로 진행하는 CloudNet@ 팀의 PKOS 2주차 정리입니다.
✔ 쿠버네티스에서는 Pod와 데이터를 분리해서 PersistentVolume이라는 별도의 추상화된 리소스로 관리합니다.
✔ PersistentVolume, PersistentVolumeClaim, StorageClass
💠 busybox 파드를 재시작하면 기존 데이터는 사라집니다.
✅ 쿠버네티스 PV , PVC, StorageClass
✔ PersistentVolume ? 실제 데이터가 영속적으로 저장되는 스토리지의 일부, StorageClass 로 동적으로 할당
✔ PVC ? 실제 데이터가 저장된느 PV와 분리해서 PV의 스토리지 영역과 액세스모드(ReadWriteOnce, ReadWriteMany)등 PV에 관한 설정만 별도로 분리 한 쿠버네티스 리소스
✔ StorageClass ? 스토리지 솔루션 또는 클라우드 프로바이더에서 제공하는 여러 가지 스토리지 중 동일한 속성의 스토리지 집합 리소스
1) 스토리지 유형을 정하고 -> 2) StorageClass 로 생성 -> 3) PVC로 볼륨 할당을 요청 -> 4) 스토리지 클래스에서 PV할당
✅ OpenEBS 로컬 호스트패스 설치
✔ 쿠버네티스는 StorageClass 을 이용해 스토리지 서비슷를 제공합니다.
✔ OpenEBS 호스트패스 ? 파드가 실행되는 호스트 노드의 특정 디렉토리(호스트패스)를 Pod의 볼륨으로 할당
💠 OpenEBS을 설치합니다.
https://openebs.io/docs/2.12.x/user-guides/installation
✔ openebs-device : 노드에서 마운트하지 않은 별도의 디스크 디바이스에 Pod의 데이터를 저장
✔ openebs-hostpath : 호스트 노드의 특정 디렉토리에 데이터를 할당
✅ StorageClass 를 이용한 PVC 및 PV 사용
💠 PVC를 만드는 YAML 파일입니다.
💠 PVC를 생성합니다.
✔ 'first consumer 가 볼륨을 binding 하기를 기다린다'
✔ PVC 는 해당 PVC를 사용하는 Pod 가 먼저 생성 -> 볼륨 연결
✔ Pod 가 생성되고 해당 PVC 를 마운트하면 상태가 Pending -> Bound 로 변경됩니다.
📌 사용자는 먼저 Pod가 사용할 볼륨을 PVC로 생성 -> 해당 PVC를 Pod yaml파일의 volumeMounts 와 volumes 에 추가해서 사용합니다.
💠 Pod 를 생성하고 'Bound' 된 정보를 확인합니다.
💠 Pod에서 PVC 가 정상적으로 동작하는지 기록되는 지 확인합니다.
💠 Pod 를 삭제하고 다시 생성하여도 이전 데이터를 확인할 수 있습니다.
💠 PV 와 PVC 정보를 확인합니다.
✔ RECLAIM POLICY
: Delete : PVC를 삭제하면 영구볼륨도 함께 삭제
Retain : PVC는 삭제해도 PV는 삭제되지 않고 유지
✅ 사용자 스토리지 클래스를 지정해 헬름 차트 MySQL 설치
💠 helm 으로 MySQL 을 설치합니다.
💠 storageClass 를: "openebs-hostpath" 로 수정하고 설치합니다.
💠 설치 후 정보를 확인합니다.
💠 헬름 차트를 삭제하였지만 PVC는 삭제되지 않고 그대로 유지됩니다.
✅ 로컬 호스트패스 스토리지 클래스
⛔ 뛰어난 IOPS 성능 - kubestr 을 이용한 성능 측정
✔ IOPS (Input/Output Operations Per Second) : 스토리지 성능 측정의 기본 단위
💠 kubestr 을 설치합니다.
💠 FIO 스크립트를 작성합니다.
💠 kubestr 를 이용해 IOPS 성능을 측정합니다.
⛔ 스토리지 고가용성 구성 제약 - 노드 제거 테스트
💠 볼륨을 사용하는 Pod 와 볼륨을 사용하지 않는 Pod를 각각 실행합니다.
💠 볼륨을 사용하는 Pod 의 노드 가용성 검증을 위해 date-pod-xxx Pod가 실행중인 노드(ubutu20-1)에서 실행중인 모든 Pod들을 제거합니다.
💠 데이터 볼륨이 없는 nginx 파드들은 ubuntu20-1 노드에서 종료되고 다른 노드에서 실행되지만. 볼류을 가진 datra 파드는 'pending' 상태로 머물러 있습니다.
✔ PVC 가 특정 노드만 실행 중인 파드는 해당 노드에서만 실행이 가능합니다.
💠 노드를 다시 정상 상태로 변경하면 data 파드가 정상 실행됩니다.
📌 로컬 호스트 패스는 특정 노드에 할당돼야하는 제약 사항이 있습니다.
'Production Kubernetes Online Study' 카테고리의 다른 글
[2주차] CHAPTER-12 쿠버네티스 공유 파일 스토리지 (0) | 2023.03.14 |
---|---|
[2주차] CHAPTER-11 스토리지 볼륨 스냅샷 사용하기 (0) | 2023.03.14 |
[2주차] CHAPTER-09 Traefik 인그레스 구축 (0) | 2023.03.14 |
[2주차] CHAPTER-08 MetalLB 로드밸랜서 구축 (0) | 2023.03.14 |
[2주차] CHAPTER-07 쿠버네티스 서비스 사용하기 (0) | 2023.03.14 |