Kubernetes
June 5, 2023
Ресайз PV в Kubernetes
В данной статье рассмотрим процесс ресайза диска, примонтированного в качестве PV к поду.
У StorageClass в YC возможность изменять размер примонтированного диска есть по дефолту. За это отвечает параметр ALLOWVOLUMEEXPANSION.
kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE yc-network-hdd (default) disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 32d yc-network-nvme disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 32d yc-network-ssd (default) disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 32d yc-network-ssd-nonreplicated disk-csi-driver.mks.ycloud.io Delete WaitForFirstConsumer true 32d
Но если, внезапно, используется другой sc, не поддерживающий изменение размера, то необходимо будет эту опцию включить.
kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE cam-hdd-retain disk-csi-driver.mks.ycloud.io Retain WaitForFirstConsumer false 31d
Правим с помощью kubectl edit sc cam-hdd-retain
Добавляем в спецификацию allowVolumeExpansion: true Будет примерно так:
parameters: csi.storage.k8s.io/fstype: ext4 type: network-hdd provisioner: disk-csi-driver.mks.ycloud.io reclaimPolicy: Retain allowVolumeExpansion: true volumeBindingMode: WaitForFirstConsumer
#Результат применения allowVolumeExpansion kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE cam-hdd-retain disk-csi-driver.mks.ycloud.io Retain WaitForFirstConsumer true 31d
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-nginx2
namespace: default
labels:
pvc: nginx
annotations:
author: cameda
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 6Gi
EOFcat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: cameda-nginx
namespace: default
labels:
app: nginx
env: prod
annotations:
author: cameda
spec:
containers:
- name: cameda-nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 300m
memory: 300Mi
limits:
memory: 500Mi
ports:
- containerPort: 80
- containerPort: 443
livenessProbe:
failureThreshold: 10
successThreshold: 1
httpGet:
path: /
port: 80
periodSeconds: 10
timeoutSeconds: 1
initialDelaySeconds: 5
readinessProbe:
failureThreshold: 3
successThreshold: 1
exec:
command:
- curl
- http://127.0.0.1:80
periodSeconds: 10
timeoutSeconds: 1
initialDelaySeconds: 7
volumeMounts:
- name: cam-volume
mountPath: /mnt/cameda
restartPolicy: OnFailure
volumes:
- name: cam-volume
persistentVolumeClaim:
claimName: pvc-nginx2
securityContext:
fsGroup: 1000
runAsUser: 0
EOFУбиваем под и делаем ресайз PVC.
kubectl delete po cameda-nginx kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-nginx2 Bound pvc-5326d1ee-552a-4aa9-a2fd-b99ad6ccb19f 6Gi RWO yc-network-hdd 17m
kubectl edit pvc pvc-nginx2
# Изменения вносятся в поле spec.resources.requests.storage.
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 12Gi
storageClassName: yc-network-hdd
volumeMode: Filesystem
volumeName: pvc-5326d1ee-552a-4aa9-a2fd-b99ad6ccb19f
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pvc-5326d1ee-552a-4aa9-a2fd-b99ad6ccb19f 12Gi RWO Delete Bound default/pvc-nginx2 yc-network-hdd 14mСоздаём под по новой и проверяем его размер.
kubectl get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-nginx2 Bound pvc-5326d1ee-552a-4aa9-a2fd-b99ad6ccb19f 12Gi RWO yc-network-hdd 32m
June 5, 2023, 17:58
0 views
0 reposts