Увеличение размера тома для контроллера StatefulSet
Чтобы увеличить размер тома для контроллера StatefulSet без остановки сервиса:
Перед началом работы установите kubectl
Создайте контроллер StatefulSet
-
Создайте файл
sts.yaml
с конфигурацией контроллера:sts.yaml
apiVersion: apps/v1 kind: StatefulSet metadata: name: ubuntu-test spec: selector: matchLabels: app: ubuntu serviceName: "ubuntu" replicas: 3 template: metadata: labels: app: ubuntu spec: terminationGracePeriodSeconds: 10 containers: - name: ubuntu image: ubuntu command: ["/bin/sh"] args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"] volumeMounts: - mountPath: /data name: pvc-dynamic volumeClaimTemplates: - metadata: name: pvc-dynamic spec: accessModes: [ "ReadWriteOnce" ] storageClassName: "yc-network-hdd" resources: requests: storage: 1Gi
-
Создайте контроллер:
kubectl apply -f sts.yaml
В результате выполнения команды будет создан контроллер StatefulSet с именем
ubuntu-test
, состоящий из трех подов. Размер PersistentVolumeClaim для каждого пода — 1 ГБ. -
Убедитесь, что поды контроллера перешли в статус
Running
, а PersistentVolumeClaim — в статусBound
:kubectl get pods,pvc
Результат:
NAME READY STATUS RESTARTS AGE pod/ubuntu-test-0 1/1 Running 0 90s pod/ubuntu-test-1 1/1 Running 0 80s pod/ubuntu-test-2 1/1 Running 0 72s NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE persistentvolumeclaim/pvc-dynamic-ubuntu-test-0 Bound pvc-603ac129-fe56-400a-8481-feaa******** 1Gi RWO yc-network-hdd 91s persistentvolumeclaim/pvc-dynamic-ubuntu-test-1 Bound pvc-a6fb0761-0771-483c-abfb-d4a8******** 1Gi RWO yc-network-hdd 81s persistentvolumeclaim/pvc-dynamic-ubuntu-test-2 Bound pvc-f479c8aa-426a-4e43-9749-5e0f******** 1Gi RWO yc-network-hdd 73s
-
Убедитесь, что диски для объектов с префиксами
k8s-csi
перешли в статусREADY
:yc compute disk list
Результат:
+----------------------+--------------------------------------------------+------------+-------------------+--------+----------------------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | INSTANCE IDS | DESCRIPTION | +----------------------+--------------------------------------------------+------------+-------------------+--------+----------------------+-------------+ | ef3b5ln111s3******** | k8s-csi-15319ac44278c2ff23f0df04ebdbe5a8******** | 1073741824 | ru-central1-a | READY | ef3nrev9j72t******** | | | ef3e617rmqri******** | k8s-csi-336f16a11f750525075d7c155ad26ae3******** | 1073741824 | ru-central1-a | READY | ef3nrev9j72t******** | | | ef3rfleqkit0******** | k8s-csi-ba784ddd49c7aabc63bcbfc45be3cc2e******** | 1073741824 | ru-central1-a | READY | ef3nrev9j72t******** | | +----------------------+--------------------------------------------------+------------+-------------------+--------+----------------------+-------------+
Внесите изменения в настройки контроллера
-
Сохраните текущую конфигурацию контроллера
ubuntu-test
в файлubuntu-test-sts.yaml
:kubectl get sts ubuntu-test --output yaml > ubuntu-test-sts.yaml
-
В файле
ubuntu-test-sts.yaml
увеличьте значение параметраvolumeClaimTemplates.spec.resources.requests.storage
с1Gi
до2Gi
:... spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi
Примечание
Аналогичное значение
1Gi
настройкиkubectl.kubernetes.io/last-applied-configuration
изменять не нужно. -
Удалите текущий контроллер StatefulSet
ubuntu-test
:kubectl delete statefulset ubuntu-test --cascade=orphan
-
Убедитесь, что контроллер StatefulSet удален:
kubectl get sts
-
Удалите первый под
ubuntu-test-0
:kubectl delete pod ubuntu-test-0
-
Внесите изменения в PersistentVolumeClaim удаленного пода
ubuntu-test-0
— увеличьте размер хранилища до 2 ГБ:kubectl patch pvc pvc-dynamic-ubuntu-test-0 --patch '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
-
Примените изменения в контроллере
ubuntu-test
:kubectl apply -f ubuntu-test-sts.yaml
-
Уменьшите количество подов контроллера
ubuntu-test
до 1:kubectl scale statefulset ubuntu-test --replicas=1
-
Увеличьте размер хранилища до 2 ГБ для подов
ubuntu-test-1
иubuntu-test-2
:kubectl patch pvc pvc-dynamic-ubuntu-test-1 --patch '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' && \ kubectl patch pvc pvc-dynamic-ubuntu-test-2 --patch '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
-
Верните прежнее количество подов контроллера
ubuntu-test
обратно к 3:kubectl scale statefulset ubuntu-test --replicas=3
-
Убедитесь, что PersistentVolume для контроллера
ubuntu-test
увеличен до 2 Гбайт для каждого тома:kubectl get pv
Результат:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-603ac129-fe56-400a-8481-feaa******** 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-0 yc-network-hdd 11m pvc-a6fb0761-0771-483c-abfb-d4a8******** 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-1 yc-network-hdd 11m pvc-f479c8aa-426a-4e43-9749-5e0f******** 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-2 yc-network-hdd 11m