728x90
Resizing StatefulSet Persistent Volumes with zero downtime
kubernetes statefulset에서 사용중인 persistent volume의 사이즈를 다운타임없이 용량을 증가하는 방법입니다.
Storage Class 설정 확인
StatefuleSet에 설정한 storageClassName을 확인하여, 아래의 storage class의 설정을 확인해주세요. allowVolumeExpansion 값이 true인 경우에만 resize 가능합니다.
allowVolumeExpansion: true
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
meta.helm.sh/release-name: aws-ebs-csi-driver
meta.helm.sh/release-namespace: amazon-ebs
storageclass.kubernetes.io/is-default-class: "true"
labels:
app.kubernetes.io/managed-by: Helm
name: gp3
parameters:
csi.storage.k8s.io/fstype: ext4
type: gp3
provisioner: ebs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
StatefulSet 삭제
cascade 옵션을 사용하여, POD을 삭제하지않고, statefulset만 삭제합니다. 삭제 후 statefulset을 복구하기위해 yaml 파일로 저장해야합니다.
# StatefulSet yaml 파일 저장
$ kubectl get sts prometheus-server -n prometheus -o yaml > prometheus-server.yaml
# POD 유지한채 StatefulSet 삭제
$ kubectl delete sts prometheus-server -n prometheus --cascade=orphan
# POD 확인
$ kubectl get pod -n prometheus
Persistent Volume 사이즈 변경
statefuleset에 설정된 PVC를 조회하여, spec.resources.requests.storage에 설정된 사이즈를 수정하여 반영합니다.
$ kubectl get pvc storage-volume-prometheus-server-0 -n prometheus -o yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
...
name: storage-volume-prometheus-server-0
namespace: prometheus
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
# 사이즈 수정
storage: 100Gi
storageClassName: gp3
...
StatefulSet 복구
PVC 용량이 변경되기까지 시간이 조금 걸립니다. 확인 후 statefuleset을 복구합니다.
$ kubectl apply -f prometheus-server.yaml
728x90
'Kubernetes' 카테고리의 다른 글
Amazon EFS CSI Driver (0) | 2022.09.23 |
---|---|
Kubernetes RBAC 알아보기 (0) | 2022.09.22 |
CoreDNS NXDOMAIN 오류 해결 (0) | 2022.09.21 |
Kubernetes ServiceAccount로 kubeconfig 파일 생성 (0) | 2022.09.20 |
Amazon EBS CSI driver (4) | 2022.09.19 |