Увеличение размера тома для контроллера StatefulSet
Чтобы увеличить размер тома для контроллера StatefulSet:
- Создайте контроллер StatefulSet.
- Внесите изменения в настройки контроллера.
- Создайте контроллер с новыми настройками PersistentVolumeClaim.
Важно
В процессе выполнения инструкции количество подов контроллера будет уменьшено до нуля, что приведет к недоступности сервиса.
Создайте контроллер StatefulSet
-
Создайте файл
sts.yaml
с конфигурацией контроллера:sts.yamlapiVersion: 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-feaad7fac9c0 1Gi RWO yc-network-hdd 91s persistentvolumeclaim/pvc-dynamic-ubuntu-test-1 Bound pvc-a6fb0761-0771-483c-abfb-d4a89ec4719f 1Gi RWO yc-network-hdd 81s persistentvolumeclaim/pvc-dynamic-ubuntu-test-2 Bound pvc-f479c8aa-426a-4e43-9749-5e0fcb5dc140 1Gi RWO yc-network-hdd 73s
-
Убедитесь, что диски для объектов с префиксами
k8s-csi
перешли в статусREADY
:yc compute disk list
Результата выполнения команды:
+----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | INSTANCE IDS | DESCRIPTION | +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+ | ef3b5ln111s36h0ugf7c | k8s-csi-15319ac44278c2ff23f0df04ebdbe5a8aa6f4a49 | 1073741824 | ru-central1-a | READY | ef3nrev9j72tpte4vtac | | | ef3e617rmqrijnesob0n | k8s-csi-336f16a11f750525075d7c155ad26ae3513dca01 | 1073741824 | ru-central1-a | READY | ef3nrev9j72tpte4vtac | | | ef3rfleqkit01i3d2j41 | k8s-csi-ba784ddd49c7aabc63bcbfc45be3cc2e279fd3b6 | 1073741824 | ru-central1-a | READY | ef3nrev9j72tpte4vtac | | +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+
Внесите изменения в настройки контроллера
-
Сохраните текущую конфигурацию контроллера
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
изменять не нужно. -
Уменьшите количество подов контроллера
ubuntu-test
до нуля:kubectl scale statefulset ubuntu-test --replicas=0
-
Дождитесь завершения масштабирования контроллера. Чтобы наблюдать за состоянием удаления подов, используйте команду:
kubectl get pods
Масштабирование контроллера завершено, когда результат выполнения команды не показывает подов с префиксом
pod/ubuntu-test-
. -
Убедитесь, что диски для объектов с префиксами
k8s-csi
имеют пустойINSTANCE IDS
:yc compute disk list
Результат:
+----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+ | ID | NAME | SIZE | ZONE | STATUS | INSTANCE IDS | DESCRIPTION | +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+ | ef3b5ln111s36h0ugf7c | k8s-csi-15319ac44278c2ff23f0df04ebdbe5a8aa6f4a49 | 1073741824 | ru-central1-a | READY | | | | ef3e617rmqrijnesob0n | k8s-csi-336f16a11f750525075d7c155ad26ae3513dca01 | 1073741824 | ru-central1-a | READY | | | | ef3rfleqkit01i3d2j41 | k8s-csi-ba784ddd49c7aabc63bcbfc45be3cc2e279fd3b6 | 1073741824 | ru-central1-a | READY | | | +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+
-
Удалите текущий контроллер StatefulSet
ubuntu-test
:kubectl delete statefulset ubuntu-test --cascade=orphan
-
Убедитесь, что контроллер StatefulSet удален:
kubectl get sts
Создайте контроллер с новыми настройками PersistentVolumeClaim
-
Обновите настройки для каждого PersistentVolumeClaim контроллера:
kubectl patch pvc pvc-dynamic-ubuntu-test-0 --patch '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}' && \ 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"}}}}'
-
Создайте контроллер StatefulSet с увеличенным размером хранилища:
kubectl apply -f ubuntu-test-sts.yaml
-
Убедитесь, что создан новый контроллер StatefulSet, содержащий три пода:
kubectl get sts,pods
Результат:
NAME READY AGE statefulset.apps/ubuntu-test 3/3 15s NAME READY STATUS RESTARTS AGE pod/ubuntu-test-0 1/1 Running 0 16s pod/ubuntu-test-1 1/1 Running 0 13s pod/ubuntu-test-2 1/1 Running 0 10s
-
Убедитесь, что PersistentVolume для контроллера
ubuntu-test
увеличен до 2 Гбайт для каждого тома:kubectl get pv
Результат:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-603ac129-fe56-400a-8481-feaad7fac9c0 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-0 yc-network-hdd 11m pvc-a6fb0761-0771-483c-abfb-d4a89ec4719f 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-1 yc-network-hdd 11m pvc-f479c8aa-426a-4e43-9749-5e0fcb5dc140 2Gi RWO Delete Bound default/pvc-dynamic-ubuntu-test-2 yc-network-hdd 11m