Ssoon

[2주차] CHAPTER-10 쿠버네티스 스토리지 본문

Production Kubernetes Online Study

[2주차] CHAPTER-10 쿠버네티스 스토리지

구구달스 2023. 3. 14. 20:20
이정훈님이 집필하신 "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

 

Installing OpenEBS | OpenEBS Docs

This guide will help you to customize and install OpenEBS

openebs.io

✔ 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 을 설치합니다.

https://kubestr.io/

 

Kubestr

Explore your Kubernetes storage options

kubestr.io

💠 FIO 스크립트를 작성합니다.

💠 kubestr 를 이용해 IOPS 성능을 측정합니다.

⛔ 스토리지 고가용성 구성 제약 - 노드 제거 테스트

💠  볼륨을 사용하는 Pod 와 볼륨을 사용하지 않는 Pod를 각각 실행합니다.

💠 볼륨을 사용하는 Pod 의 노드 가용성 검증을 위해 date-pod-xxx Pod가 실행중인 노드(ubutu20-1)에서 실행중인 모든 Pod들을 제거합니다.

💠 데이터 볼륨이 없는 nginx 파드들은 ubuntu20-1 노드에서 종료되고 다른 노드에서 실행되지만. 볼류을 가진 datra 파드는 'pending' 상태로 머물러 있습니다.

✔ PVC 가 특정 노드만 실행 중인 파드는 해당 노드에서만 실행이 가능합니다.

 

💠 노드를 다시 정상 상태로 변경하면 data 파드가 정상 실행됩니다.

📌 로컬 호스트 패스는 특정 노드에 할당돼야하는 제약 사항이 있습니다.

Comments