안녕하세요,
베스핀글로벌 GCP Support팀입니다.
이번 아티클에서는 주제 "Pod를 Persistent Volume에 마운트 시 Pod를 생성할 수 없는 에러"에 대해 다루고자 합니다.
Pod에 PV 마운트 실패 원인 분석 및 해결 방안
Pod에 PV를 부착하는 경우, 여러 원인에 의해 마운트가 되지 않는 경우가 발생할 수 있습니다.
yaml 파일에 명시된 PV가 마운트되지 않으면 Pod가 필요한 스토리지 리소스에 접근할 수 없어 Pod 생성이 실패할 수 있습니다.
주요 원인과 해결 방법은 다음과 같습니다.
1. Pod와 PV의 Zone 불일치
Pod를 생성한 Node의 위치와 PV의 위치가 다른 경우 마운트가 실패할 수 있습니다.
예를 들어 Pod를 생성한 Node가 aisa-northeast3-a Zone에 위치하며 마운트할 대상인 PV가 asia-northeast3-b Zone에 위치한다면 서로 다른 위치에 존재하고 있기 때문에 Pod와 PV간에 연결을 할 수 없습니다.
[해결방법]
- 해당 PV 혹은 Node를 동일한 zone으로 이동시켜 생성합니다.
- Regional PV를 사용하여 다른 Zone에 있어도 마운트가 가능하도록 합니다.
2. Access Mode 설정 오류 (ReadWriteOnce)
PV가 `ReadWriteOnce` Access Mode를 사용 중이고 이미 다른 Node의 Pod에 부착된 경우, 추가적인 마운트가 불가능합니다.
PV는 3가지 AccessMode를 지원합니다.
- ReadWriteOnce: 볼륨은 단일 노드에 의한 읽기-쓰기로 마운트 될 수 있습니다.
- ReadOnlyMany: 볼륨은 여러 노드에 의한 읽기 전용으로 마운트 될 수 있습니다.
- ReadWriteMany: 볼륨은 여러 노드에 의한 읽기-쓰기로 마운트될 수 있습니다.
※ GKE 상에서 ReadWriteMany Access Mode를 사용하기 위해서는 Filestore 인스턴스 사용이 필요합니다.
[해결방법]
- ReadWriteOnce를 사용 중이라면 1개의 노드에 대해서만 마운트 될 수 있습니다.
- 여러 노드에 1개의 PV를 마운트 해야 하는 상황이라면, ReadOnlyMany 혹은 ReadWriteMany를 적용합니다.
3. PV 용량 부족
PV의 용량이 Pod에서 요청하는 용량보다 작은 경우, Pod는 PV에 마운트될 수 없습니다.
[해결방법]
- PV의 용량을 증가시킵니다.
- Pod에서 요청하는 용량을 줄입니다.
4. StorageClass 불일치
Pod의 PersistentVolumeClaim에서 지정한 StorageClass와 PV의 StorageClass가 일치하지 않는 경우, Pod는 PV에 마운트될 수 없습니다.
[해결방법]
- Pod의 PersistentVolumeClaim에서 지정한 StorageClass와 PV의 StorageClass를 일치시킵니다.
- StorageClass를 지정하지 않으면 기본 StorageClass가 사용됩니다.
5. 잘못된 PersistentVolumeClaim 설정
PersistentVolumeClaim의 설정이 잘못된 경우, Pod는 PV에 마운트될 수 없습니다.
예를 들어, `accessModes` 필드에 잘못된 값이 지정된 경우 또는 `resources.requests.storage` 필드에 잘못된 값이 지정된 경우 등이 있습니다.
[해결방법]
- PersistentVolumeClaim의 설정을 확인하고 수정합니다.
특히 `accessModes` 및 `resources.requests.storage` 필드의 값을 확인합니다.
그외 GKE Storage 관련된 문제 해결 이슈는 문서[3]를 참고하시기 바랍니다.
참조 링크
[1] GKE 영구 볼륨 및 동적 프로비저닝
https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes
[2] PV Access Modes
https://cloud.google.com/compute/docs/disks#access_modes
[3] GKE의 스토리지 문제 해결
https://cloud.google.com/kubernetes-engine/docs/troubleshooting/storage
관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.
감사합니다.