Overview
PV(PersistentVolume)의 용량을 증설하는 방법을 소개합니다.
AWS
AWS의 Block Storage 용량 증설 방법
AWS console에서의 증설 방법
1. AWS Console(https://aws.amazon.com/console/)로 접속하여 서비스에서 “EC2”를 선택 → Elastic Block Store의 “볼륨”을 선택 → volumeHandle(또는 PV name)로 검색 후 Size를 확인 하시기 바랍니다.
2. 상단의 “작업”을 버튼을 클릭한 후 “볼륨 수정”을 선택하시기 바랍니다.
3. 변경할 Size로 수정 후 “수정” 버튼을 클릭합니다.
4. 다시 한 번 확인하는 창이 뜨면 “예” 버튼을 클릭합니다.
<참고> 최근에 볼륨을 수정하였다면 6시간 후에 변경이 가능합니다.
5. 변경이 완료되었다는 메시지를 확인합니다.
6. 변경된 용량을 확인합니다.
용량 증설 후 file system 확장
1. 해당 PV가 연결된 pod이 떠 있는 instance에 접속
2. pvc의 용량 확인
# 변경 전의 용량(1GB)으로 표시 $ df -hT | grep pvc-7e095b59-b814-4737-b672-f6b014d6e335 /dev/nvme1n1 ext4 976M 198M 763M 21% /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-7e095b59-b814-4737-b672-f6b014d6e335/globalmount |
3. 용량이 변경된 block device확인
# 변경 후 $ lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 100G 0 disk ├─nvme0n1p1 259:1 0 100G 0 part / └─nvme0n1p128 259:2 0 1M 0 part nvme1n1 259:3 0 2G 0 disk /var/lib/kubelet/pods/73c7b7c0-0cb4-4737-841c-4b0b01cb767e/volumes/kubernetes.io~csi/pvc-7e095b59-b814-4737-b672-f6b014d6e335/mount
4. 변경된 용량이 적용되도록 file system을 확장
# /dev/xvda1 부분은 file system name sudo resize2fs /dev/xvda1 # 실행 예 $ sudo resize2fs /dev/nvme1n1 resize2fs 1.42.9 (28-Dec-2013) Filesystem at /dev/nvme1n1 is mounted on /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-7e095b59-b814-4737-b672-f6b014d6e335/globalmount; on-line resizing required old_desc_blocks = 1, new_desc_blocks = 1 The filesystem on /dev/nvme1n1 is now 524288 blocks long.
5. 정상적으로 적용되었는지 확인
$ df -hT | grep pvc-7e095b59-b814-4737-b672-f6b014d6e335 /dev/nvme1n1 ext4 2.0G 199M 1.8G 11% /var/lib/kubelet/plugins/kubernetes.io/csi/pv/pvc-7e095b59-b814-4737-b672-f6b014d6e335/globalmount
연결된 pod에도 들어가서 확인
df -h /consul/data Filesystem Size Used Available Use% Mounted on /dev/nvme1n1 1.9G 198.1M 1.7G 10% /consul/data
참고페이지
https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html
PV와 PVC에 정의된 용량을 증설된 용량으로 표시되도록 변경
이 방법은 kubectl get pv나 kubectl get pvc로 확인하였을 때 증설된 용량으로 보이게 하기 위해서 필요합니다.
예전 용량으로 보이셔도 상관없다면 수행하지 않으셔도 됩니다.
[PV의 Reclaim Policy가 Retain인 경우]
1. PVC Backup
해당 PV의 PVC를 backup 합니다.
$ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-retain-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}} ... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 30Gi ... |
3. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
4. PV 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ kubectl edit pv <PV name> ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
5. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
6. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
[PV의 Reclaim Policy가 Delete인 경우]
<주의> 아래 순서대로가 아닌 PVC를 먼저 삭제하게 되면 Storage가 삭제됨
1. PV, PVC backup
$ kubectl get pv <PV name> -o yaml > <저장하고자 하는 filename>.yaml $ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PV yaml 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ vi <저장한 PV filename>.yaml ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장합니다.
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}}... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 20Gi ... |
3. PV Delete
$ kubectl delete pv --force --grace-period=0 <PV name> # 만일 위의 명령어 실행 후에도 상태가 Terminating가 계속 된다면 아래 patch 실행 $ kubectl patch pv <pvc name> -p '{"metadata":{"finalizers":null}}' |
4. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
5. PV create
Backup해둔 PV yaml로 PV를 생성합니다.
$ kubectl create -f <저장한 PV filename>.yaml |
6. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
7. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
kubectl에서의 용량 증설 방법
PVC에서 용량 증설
변경하고자 하는 PV의 PVC를 편집으로 연 후에 용량(5GB)을 증설하는 용량(6GB)으로 변경 후 저장합니다.
$ kubectl edit pvc zcp-oidc-postgresql apiVersion: v1 kind: PersistentVolumeClaim ... spec: ... resources: requests: storage: 5Gi ... |
증설한 용량으로 변경이 되었는지 확인
kubectl CLI로 확인
PVC 용량 확인
$ kubectl get pvc -w NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE elasticsearch-data-test-elasticsearch-data-test-0 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-1 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-2 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-2 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 220Gi RWO ibmc-block-retain-silver 21h |
PV 용량 확인
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 220Gi RWO Retain Bound zcp-system/elasticsearch-data-test-elasticsearch-data-test-2 ibmc-block-retain-silver 21h |
연결된 pod 재시작
pod에 들어가서 변경된 용량이 적용되었는지 확인합니다.
$ kubectl exec -it elasticsearch-data-test-2 bash [root@elasticsearch-data-test-2 elasticsearch]# df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/3600a09803830446d463f4c454857636c 216G 60M 216G 1% /usr/share/elasticsearch/data ... |
참고페이지
https://kubernetes.io/blog/2018/07/12/resizing-persistent-volumes-using-kubernetes/
https://kubernetes.io/docs/concepts/storage/persistent-volumes/#expanding-persistent-volumes-claims
AWS의 File Storage 용량 증설 방법
따로 증설할 필요가 없습니다.
AWS에서는 file Storage가 각각의 PV로 생성되는 것이 아니라 하나의 EFS를 생성하는 방식입니다.
file stroage를 생성하게 되면 EFS 안에 폴더가 생성되고, 생성 시 설정한 용량을 넘어서게 되면 늘어난 용량으로 자동적으로 증설됩니다. 참고로 EFS 전체 용량을 기준으로 과금 됩니다.
Azure
Azure의 Block Storage 용량 증설 방법
<주의> 용량 증설 전에 PV와 연결된 pod이 있으면 먼저 종료해주셔야 합니다.
1. Azure Console(https://portal.azure.com/ )에서 Resource groups → AKS resource group선택 → PV name로 검색 후 선택 → 용량을 확인 하시기 바랍니다.
2. Settings 하위 Size + performance를 클릭하십시오.
disk size를 변경을 원하는 용량으로 수정한 후 [Resize] 버튼을 클릭하십시오.
<주의> 사용 중인 disk 공간의 양에 관계없이 provisioning된 disk에 대해 동일한 요금이 청구됩니다.
예를 들어 200GiB disk는 256GiB disk에 provisioning되므로 provisioning 된 256GiB에 대해 비용이 청구됩니다.
3. 변경이 완료되었다는 메시지를 확인합니다.
4. Overview에서 변경된 용량을 확인합니다.
시작 전에 종료 했던 PV와 연결된 pod이 있으시면 재기동을 해주시기 바랍니다.
PV와 PVC에 정의된 용량을 증설된 용량으로 표시되도록 변경
이 방법은 kubectl get pv나 kubectl get pvc로 확인하였을 때 증설된 용량으로 보이게 하기 위해서 필요합니다.
예전 용량으로 보이셔도 상관없다면 수행하지 않으셔도 됩니다.
[PV의 Reclaim Policy가 Retain인 경우]
1. PVC Backup
해당 PV의 PVC를 backup 합니다.
$ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-retain-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}} ... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 30Gi ... |
3. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
4. PV 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ kubectl edit pv <PV name> ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
5. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
6. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
[PV의 Reclaim Policy가 Delete인 경우]
<주의> 아래 순서대로가 아닌 PVC를 먼저 삭제하게 되면 Storage가 삭제됨
1. PV, PVC backup
$ kubectl get pv <PV name> -o yaml > <저장하고자 하는 filename>.yaml $ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PV yaml 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ vi <저장한 PV filename>.yaml ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
3. PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장합니다.
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}}... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 20Gi ... |
4. PV Delete
$ kubectl delete pv --force --grace-period=0 <PV name> # 만일 위의 명령어 실행 후에도 상태가 Terminating가 계속 된다면 아래 patch 실행 $ kubectl patch pv <pvc name> -p '{"metadata":{"finalizers":null}}' |
5. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
6. PV create
Backup해둔 PV yaml로 PV를 생성합니다.
$ kubectl create -f <저장한 PV filename>.yaml |
7. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
8. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
Azure의 File Storage 용량 증설 방법
<참고> Block Stroage도 아래 방법으로 증설이 가능합니다.
PVC에서 용량 증설
변경하고자 하는 PV의 PVC를 편집으로 연 후에 용량(20GB)을 증설하는 용량(22GB)으로 변경 후 저장합니다.
$ kubectl edit pvc elasticsearch-data-elasticsearch-data-2 apiVersion: v1 kind: PersistentVolumeClaim ... spec: ... resources: requests: storage: 200Gi ... |
증설한 용량으로 변경이 되었는지 확인
kubectl CLI로 확인
PVC 용량 확인
$ kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE ... zcp-git-gitea Bound pvc-4b3376db-4961-42a5-9b66-8b336372e744 22Gi RWX file-standard 448d ... |
PV 용량 확인
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 220Gi RWO Retain Bound zcp-system/elasticsearch-data-test-elasticsearch-data-test-2 ibmc-block-retain-silver 21h |
pod에 들어가서 확인합니다.
bash-5.0# df -h Filesystem Size Used Avail Use% Mounted on ... //f8dc90c65c805484399c8b0.file.core.windows.net/kubernetes-dynamic-pvc-4b3376db-4961-42a5-9b66-8b336372e744 22.0G 64.0K 22.0G 0% /data ... |
IBM
증설하고자 하는 PV의 storage class에 allowVolumeExpansion 설정이 되어 있는지 확인합니다.
allowVolumeExpansion: true
$ kubectl get storageclass ibmc-block-bronze -o yaml allowVolumeExpansion: true apiVersion: storage.k8s.io/v1 kind: StorageClass ... |
allowVolumeExpansion 설정이 되어 있을 경우의 증설방법
PVC에서 용량 증설
증설하고자 하는 PV의 PVC를 편집으로 연 후에 용량(200GB)을 증설하는 용량(220GB)으로 변경 후 저장합니다.
$ kubectl edit pvc elasticsearch-data-elasticsearch-data-2 apiVersion: v1 kind: PersistentVolumeClaim ... spec: ... resources: requests: storage: 200Gi ... |
증설한 용량으로 변경이 되었는지 확인
kubectl CLI로 확인
PVC 용량 확인
$ kubectl get pvc -w NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE elasticsearch-data-test-elasticsearch-data-test-0 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-1 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-2 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 200Gi RWO ibmc-block-retain-silver 21h elasticsearch-data-test-elasticsearch-data-test-2 Bound pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 220Gi RWO ibmc-block-retain-silver 21h |
PV 용량 확인
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 220Gi RWO Retain Bound zcp-system/elasticsearch-data-test-elasticsearch-data-test-2 ibmc-block-retain-silver 21h |
pod에 들어가서 확인합니다.
$ kubectl exec -it elasticsearch-data-test-2 bash [root@elasticsearch-data-test-2 elasticsearch]# df -h Filesystem Size Used Avail Use% Mounted on ... /dev/mapper/3600a09803830446d463f4c454857636c 216G 60M 216G 1% /usr/share/elasticsearch/data ... |
IBM console에서 확인
1. PV의 VolumeID를 확인
$ kubectl get pv -o yaml pvc-b4e6876b-011c-48c1-9a9b-d84172078d8f apiVersion: v1 kind: PersistentVolume ... spec: ... flexVolume: ... options: ... VolumeID: "131379026" ... |
2. IBM console에서 변경된 용량 확인
allowVolumeExpansion 설정이 안 되어 있을 경우의 증설방법
IBM console에서 용량 변경
1. IBM Cloud™ 콘솔(https://cloud.ibm.com)에서 클래식 인프라(Classic Infrastructure) > Storage > Block Storage를 클릭하십시오.
2. 목록에서 LUN(Logical Unit Number)을 선택하고 조치 > LUN 수정(Mdify LUN)을 클릭하십시오.
3. GB 단위로 새 스토리지 크기를 입력하십시오.
현재 PV size보다 크게만 설정 가능하고, 최대 12,000GB(12TB)까지 증설 가능합니다.
4. 선택사항 및 새 가격을 검토하십시오.
현재 PV에 적용된 storage class를 변경할 수 있습니다.
5. 마스터 서비스 계약을 읽었습니다... 선택란을 클릭하고 주문하기를 클릭하십시오.
6. 5분 정도 후에 변경된 용량으로 적용 되었는지 확인하시기 바랍니다.
증설 후 Pod의 용량 변경
위의 작업들을 하게 되면 실제 strorage는 용량이 증설되었지만, 연결해서 사용하고 있는 pod에는 예전 용량으로 표시됩니다.
해당 PV에 아래 patch를 적용하고, 연결된 pod을 재기동 하시면 증설된 용량으로 연결됩니다.
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
PV와 PVC에 정의된 용량을 증설된 용량으로 표시되도록 변경
이 방법은 kubectl get pv나 kubectl get pvc로 확인하였을 때 증설된 용량으로 보이게 하기 위해서 필요합니다.
예전 용량으로 보이셔도 상관없다면 수행하지 않으셔도 됩니다.
[PV의 Reclaim Policy가 Retain인 경우]
1. PVC Backup
해당 PV의 PVC를 backup 합니다.
$ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-retain-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}} ... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 30Gi ... |
3. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
4. PV 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ kubectl edit pv <PV name> ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
5. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |
6. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
[PV의 Reclaim Policy가 Delete인 경우]
<주의> 아래 순서대로가 아닌 PVC를 먼저 삭제하게 되면 Storage가 삭제됨
1. PV, PVC backup
$ kubectl get pv <PV name> -o yaml > <저장하고자 하는 filename>.yaml $ kubectl get pvc <PVC name> -o yaml > <저장하고자 하는 filename>.yaml |
2. PV yaml 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 2개의 부분을 증설된 용량으로 변경해서 저장합니다.
labels > CapacityGb
spec > capacity > storage
claimRef 부분은 삭제
$ vi <저장한 PV filename>.yaml ... labels: CapacityGb: "30" ... spec: ... capacity: storage: 30Gi ... |
3. PVC yaml file 수정 <만일, Endurance의 IOPS도 변경했다면 storage-class도 변경할 것>
아래 3개의 부분을 증설된 용량으로 변경해서 저장합니다.
metadata > annotation > kubectl.kubernetes.io/last-applied-configuration
spec > resources > requests > storage
status > capacity > storage
$ vi <저장한 PVC filename>.yaml ... kubectl.kubernetes.io/last-applied-configuration: | {"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{"kubernetes.io/change-cause":"kubectl apply --filename=k8s/prod/pvc.yaml --namespace=zcp-system --record=true","volume.beta.kubernetes.io/storage-class":"ibmc-block-bronze"},"labels":{"billingType":"monthly"},"name":"pvc-test","namespace":"zcp-system"},"spec":{"accessModes":["ReadWriteOnce"],"resources":{"requests":{"storage":"30Gi"}}}}... spec: ... resources: requests: storage: 20Gi ... status: ... capacity: storage: 20Gi ... |
4. PV Delete
$ kubectl delete pv --force --grace-period=0 <PV name> # 만일 위의 명령어 실행 후에도 상태가 Terminating가 계속 된다면 아래 patch 실행 $ kubectl patch pv <pvc name> -p '{"metadata":{"finalizers":null}}' |
5. PVC Delete
$ kubectl delete pvc --force --grace-period=0 <PVC name> |
6. PV create
Backup해둔 PV yaml로 PV를 생성합니다.
$ kubectl create -f <저장한 PV filename>.yaml |
7. PVC create
Backup해둔 PVC yaml로 PVC를 생성합니다.
$ kubectl create -f <저장한 PVC filename>.yaml |
8. PV patch
$ kubectl patch pv <PV name> -p '{"metadata": {"annotations":{"ibm.io/autofix-resizefs":"true"}}}' |