Nutanix CSI 사용시 resize 안되는 현상

유형욱·2022년 1월 28일
1

K8s

목록 보기
2/4
post-thumbnail

✌ 개요

최근 진행중인 프로젝트에서 Nutanix HCI 환경에서 쿠버네티스 클러스터를 구성하여 구축 및 운영을 진행중이다.
Nutanix에서는 공식적으로 CSI Driver를 지원하고 있으며 Nutanix Files, Nutanix Volumes 타입 등이 있다. 참고 : 뉴타닉스 CSI Driver 공식문서

필자는 Nutanix Files 타입을 통해 Shared Storage로 사용하고 있으며 이와 관련된 구성방법 및 팁을 향후 포스팅 할 예정이다.

📢 본문

Nutanix Files을 사용하여 구축된 환경에서 PV 사이즈를 변경해야 하는 상황이 있었다. 하지만 PVC에서 requests 사이즈만 변경을 시도했을 때 다음과 같은 에러가 발생하였다.

  • 변경한 PVC YAML
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
   name: ubidaemon-pvc
spec:
   accessModes:
      - ReadWriteMany
   resources:
      requests:
         storage: 500Mi
   storageClassName: focu-afs
  • 변경된 YAML 적용(apply)
k apply -f ubidaemon-pvc.yaml
Error from server (Forbidden): error when applying patch:
{"metadata":{"annotations":{"kubectl.kubernetes.io/last-applied-configuration":"{\"apiVersion\":\"v1\",\"kind\":\"PersistentVolumeClaim\",\"metadata\":{\"annotations\":{},\"name\":\"ubidaemon-pvc\",\"namespace\":\"default\"},\"spec\":{\"accessModes\":[\"ReadWriteMany\"],\"resources\":{\"requests\":{\"storage\":\"500Mi\"}},\"storageClassName\":\"focu-afs\"}}\n"}},"spec":{"resources":{"requests":{"storage":"500Mi"}}}}
to:
Resource: "/v1, Resource=persistentvolumeclaims", GroupVersionKind: "/v1, Kind=PersistentVolumeClaim"
Name: "ubidaemon-pvc", Namespace: "default"
for: "ubidaemon-pvc.yaml": persistentvolumeclaims "ubidaemon-pvc" is forbidden: only dynamically provisioned pvc can be resized and the storageclass that provisions the pvc must support resize

주된 원인은 only dynamically provisioned pvc can be resized and the storageclass that provisions the pvc must support resize 이었다.
확인해본 결과 Nutanix Files StorageClass를 생성할 때 정적(static) 방식으로 생성하였기 때문에 edit 했을 때 동적으로 반영되지 않았다.

💡 해결방안

해결방안은 다음 두 가지가 있는데 필자는 두 번째 방법을 사용하였다.

  1. StorageClass 타입 변경 : static에서 dynamic으로 변경 참고
  2. StorageClass 옵션 변경 : allowVolumeExpansion참고

변경 방법은 아주 간단하다. 기존 StorageClass에서 allowVolumeExpansion: true 옵션을 넣어주면 끝이다.

❓ 기타 궁금증

필자는 분명히 PVC 변경시 100Mi -> 500Mi로 요청하였으나 실제로 할당된 PV 사이즈는 1Gi 였다.
다음에서 볼 수 있는 것 처럼 requests 값은 500Mi 이지만 .status.capacity.storage: 1Gi 인 아주 이상한 일이 발생했다.

...
spec:
  accessModes:
  - ReadWriteMany
  resources:
    requests:
      storage: 500Mi
  storageClassName: focu-afs
  volumeMode: Filesystem
  volumeName: pvc-2bbd179c-713e-467b-88c1-92282d6979c0
status:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: 1Gi
  phase: Bound

해당 이슈(?)는 버그인지.. Nutanix CSI에서 기가(G)단위로 resize 가능하도록 설정한 것인지 문의를 해볼 예정이다.

profile
DevOps를 꿈꾸는 엔지니어 입니다.

0개의 댓글