Cloud/AWS

[AWS] EFS 스토리지 사용 시, pod 내부 권한 에러

cloud_nice 2022. 5. 12. 13:39

AWS 환경에서 EFS 스토리지를 사용하여 PV를 생성할때, pod 내부에서 파일 권한 혹은 유저 권한에 대한 에러 로그가 나타나는 현상이 있습니다. 예시 로그로는 아래와 같습니다.

 

ex) chown: /var/lib/data: Operation not permitted

ex) /var/lib/data has wrong ownership error

 

이와 같은 에러의 원인은 EFS 스토리지를 사용할 경우, pod내부에 설정해준 uid/gid & 파일권한이 EFS 액세스포인트값으로 덮어 씌워지기 때문입니다. AWS 콘솔에 접속하여 생성된 EFS 액세스포인트를 살펴보면 initContainer 상에는 999로 주었던 uid가 예를 들어 1001과 같이 랜덤한 값으로 설정 되어있는 것을 보실 수 있습니다.

 

해결 방안은 다음과 같습니다. storageClass 단에서부터 uid/gid & directoryPerms 파라미터를 사용해 권한 문제를 해결할 수 있습니다. 권한은 앱별로 필요한 uid/gid & directorPerms 을 세팅해주세요. storageClass 예시 yaml도 첨부 드립니다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  annotations:
  name: efs-sc
parameters:
  basePath: /dynamic_provisioning
  directoryPerms: "755"
  gid: "0"
  uid: "0"
  fileSystemId: [fileSystemId]
  provisioningMode: efs-ap
provisioner: efs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: Immediate

 

참고사항으로 efs-csi-driver:v1.13.4 버전에서는 해당 옵션이 적용되지 않습니다. (버그? 몰겟삼)

해서 efs-csi-driver:v1.13.8 버전 사용을 추천드리는 바 입니다.

 

aws 공부를 꾸준히 해서 글로 자주 찾아 뵐 수 있도록... 노력.. 하겠습니다 ~ !