메뉴

이 페이지에는 기계 번역이 사용되었습니다. 일부 콘텐츠는 완벽하지 않을 수 있습니다.

피드백 공유

Kubernetes Persistent Volume Claims 설명

목차

이 페이지 공유하기

Yifat Perry
Yifat Perry

Kubernetes 영구 볼륨과 영구 볼륨 클레임이란 무엇인가요?

Kubernetes 영구 볼륨(PV) 은 Kubernetes StorageClass를 통해 정의된 스토리지 장치의 영구 스토리지에 Pod가 액세스할 수 있도록 하는 객체입니다. 일시적인 특성을 가진 일반 볼륨과 달리 PV는 영구적이므로 상태 저장 애플리케이션 사용 사례를 지원합니다. PV는 해당 PV를 사용하는 Pod가 삭제된 후에도 계속 존재하는 Kubernetes 클러스터의 리소스 객체입니다.

PV는 스토리지 요청인 PVC(Persistent Volume Claim)를 통해 요청해야 합니다. PVC는 기본적으로 특정 요구 사항을 충족하는 PV를 Pod에 마운트해 달라는 요청입니다. PVC는 특정 PV를 지정하지 않고 Pod에 필요한 StorageClass를 지정합니다. 관리자는 성능, 서비스 수준, 백엔드 정책과 같은 스토리지 장치의 속성을 나타내는 StorageClasses를 정의할 수 있습니다.

Kubernetes에서 PVC 패턴의 주요 장점은 개발자가 기본 스토리지 장치의 구현을 인식하지 않고도 스토리지 리소스를 동적으로 요청할 수 있다는 것입니다.

관련 콘텐츠: Kubernetes StorageClass 가이드를 참조하십시오

이 문서의 내용:

영구 볼륨 클레임: 정적 프로비저닝과 동적 프로비저닝 비교

포드를 PV에 바인딩하려면 포드에 볼륨 마운트와 PVC가 포함되어 있어야 합니다. 이러한 선언을 통해 사용자는 기본 스토리지 장비에 대한 세부 정보를 알지 못해도 포드에 PV를 마운트할 수 있습니다.

PV를 포드에 마운트하는 방법에는 두 가지가 있습니다.

  • 정적 구성은 관리자가 수동으로 PV를 생성하고 이러한 PV의 기준에 맞는 StorageClass를 정의하는 방식입니다. Pod가 StorageClass를 지정하는 PVC를 사용하면 이러한 정적 PV 중 하나에 액세스할 수 있게 됩니다.
  • 동적 구성은 PVC와 일치하는 정적 PV가 없을 때 발생합니다. 이 경우 Kubernetes 클러스터는 StorageClass 정의를 기반으로 새 PV를 프로비저닝합니다.

관련 콘텐츠: Kubernetes 공유 스토리지에 대한 가이드를 참조하십시오

영구 볼륨 클레임 생성 및 영구 볼륨에 바인딩

이 튜토리얼은 PV와 PVC의 작동 방식을 보여줍니다. 이는 Kubernetes 문서에서 제공되는 전체 튜토리얼 의 요약본입니다.

1. 노드 설정
단일 노드로 Kubernetes 클러스터를 설정하고 kubectl 명령줄이 컨트롤 플레인에 연결되어 있는지 확인합니다. 다음과 같이 노드에 디렉터리를 생성합니다.

sudo mkdir /mnt/data

디렉터리에 index.html 파일을 생성합니다.

2. 영구 볼륨 생성
다음과 같은 YAML 파일을 생성하여 PV를 정의합니다.

k8s pvc 1

노드에 PV를 생성하려면 다음 명령을 실행합니다.

kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml

3. 영구 볼륨 클레임 생성 및 영구 볼륨에 바인딩
이전에 생성한 PV와 일치하도록 다음 조건에 따라 PV가 필요한 PVC를 생성합니다.

  • 3GB 이상의 스토리지 용량
  • 읽기/쓰기 액세스 활성화
k8s pvc 2

이 명령을 실행하여 PVC를 적용합니다.

kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml

영구 볼륨 클레임을 생성하면 Kubernetes 컨트롤 플레인이 올바른 PV를 찾습니다. PV를 찾으면 PVC를 해당 PV에 바인딩합니다.

다음을 실행하여 이전에 생성한 PV의 상태를 확인합니다.

kubectl get pv task-pv-volume

바인딩이 성공하면 출력은 다음과 같습니다.

k8s pvc 3

4. 파드 생성 및 영구 볼륨 클레임 마운트
마지막으로 PVC를 사용하는 파드를 생성합니다. NGINX 이미지를 사용하여 파드를 실행하고 파드 사양의 관련 섹션에 미리 생성한 PVC를 지정합니다.

k8s pvc 4

bash 명령을 사용하여 Pod에 curl을 설치하고 다음 명령을 실행하십시오.

curl http://localhost/

출력 결과에는 1단계에서 생성한 index.html 파일의 내용이 표시되어야 합니다. 또한 새 Pod가 PVC를 통해 PV의 데이터에 접근할 수 있음을 보여주어야 합니다.

Kubernetes PVC 오류: 일반적인 원인 및 해결 방법 [C]

Kubernetes PVC는 사용이 복잡하여 진단 및 해결이 어려운 오류가 발생할 수 있습니다. PVC 오류는 일반적으로 PV 생성 문제, PV 프로비저닝 문제, PV 또는 PVC 사양 변경이라는 세 가지 광범위한 범주와 관련이 있습니다.

PVC와 관련된 가장 일반적인 오류는 FailedAttachVolume, FailedMount 및 CrashLoopBackOff입니다.

FailedAttachVolume 및 FailedMount 오류

이 두 오류는 Pod가 PV를 마운트할 수 없었음을 나타냅니다. 차이점은 FailedAttachVolume 은 볼륨이 이전 노드에서 분리되지 못했을 때 발생하고, FailedMount 는 볼륨이 필요한 경로에 마운트되지 못했을 때 발생한다는 것입니다.

이 두 가지 오류의 원인은 다양하며, 새 노드의 장애, 새 노드에 연결된 디스크 수 과다, 네트워크 파티셔닝 오류, 이전 노드의 스토리지 장치 장애 등이 포함됩니다.

문제 진단

FailedAttachVolume 및 FailedMount와 같은 문제의 원인을 진단하려면 `describe pod` 명령을 실행하고 Events 섹션에서 오류를 나타내는 메시지를 검색하십시오. 해당 메시지에는 원인에 대한 정보도 포함되어 있어야 합니다.

문제 해결

Kubernetes는 FailedAttachVolume 및 FailedMount 오류를 자동으로 처리할 수 없으므로 수동으로 처리해야 합니다.

  • 오류의 원인이 Failure to Detach인 경우 스토리지 장치의 인터페이스를 사용하여 볼륨을 수동으로 분리하십시오.
  • 오류가 Failure to Attach 또는 Mount인 경우 네트워크 파티셔닝 문제 또는 잘못된 네트워크 경로를 확인하십시오. 이것이 문제가 아니라면 Kubernetes가 Pod를 다른 노드에 스케줄링하도록 시도하거나 새 노드에서 문제를 조사하고 수정하십시오.

PersistentVolumeClaim으로 인한 CrashLoopBackOff 오류

CrashLoopBackOff는 파드가 충돌 후 재시작되고 다시 충돌하는 현상이 반복적으로 발생했음을 나타냅니다. 경우에 따라 이 오류는 손상된 PersistentVolumeClaims로 인해 발생합니다.

문제 진단

CrashLoopBackOff 오류가 PVC로 인해 발생하는지 확인하려면 PV를 마운트한 이전 컨테이너 인스턴스의 로그를 확인하고, 배포 로그를 확인하고, 필요한 경우 컨테이너에서 셸을 실행하여 충돌 원인을 파악하십시오.

문제 해결

CrashLoopBackOff가 PVC 문제로 인해 발생하는 경우 다음 단계를 시도해 보세요.

  1. 디버깅을 활성화하려면 배포를 0개 인스턴스로 확장하십시오.
  2. 다음 쿼리를 사용하여 실패한 PVC의 식별자를 가져옵니다.
    kubectl get deployment -o jsonpath="{.spec.template.spec.volumes[*].persistentVolumeClaim.claimName}" failed-deployment 
    
  3. 디버깅용 새 Pod를 생성하고 다음 명령을 사용하여 셸을 실행하세요.
    exec -it volume-debugger sh
    
  4. /data 디렉토리에 현재 마운트된 볼륨을 확인하고 Pod가 충돌하는 원인을 해결하십시오.
  5. 셸을 종료하고 디버깅 Pod를 삭제한 다음 배포를 필요한 복제본 수로 다시 확장합니다.

Cloud Volumes ONTAP를 사용한 Kubernetes 스토리지 최적화

NetApp Cloud Volumes ONTAP은 업계 최고의 엔터프라이즈급 스토리지 관리 솔루션으로, AWS, Azure, Google Cloud에서 안전하고 검증된 스토리지 관리 서비스를 제공합니다. Cloud Volumes ONTAP 용량은 페타바이트 단위로 확장할 수 있으며 파일 서비스, 데이터베이스, DevOps 또는 기타 엔터프라이즈 워크로드와 같은 다양한 사용 사례를 지원하고 고가용성, 데이터 보호, 스토리지 효율성, Kubernetes 통합 등을 비롯한 강력한 기능 세트를 제공합니다.

특히 Cloud Volumes ONTAP은 컨테이너화된 워크로드의 Kubernetes 영구 볼륨 프로비저닝 및 관리  요구사항을 지원합니다.

이러한 Kubernetes 워크로드와 Cloud Volumes ONTAP 사례 연구에서 Cloud Volumes ONTAP이 컨테이너화된 애플리케이션의 과제를 해결하는 데 어떻게 도움이 되는지 자세히 알아보십시오.

Drift chat loading