Yandex Cloud
  • Сервисы
  • Решения
  • Почему Yandex Cloud
  • Сообщество
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
Yandex Managed Service for Kubernetes
  • Сопоставление с другими сервисами Yandex Cloud
  • Начало работы
  • Пошаговые инструкции
    • Все инструкции
    • Подключение к узлу по SSH
    • Обновление Kubernetes
    • Настройка автомасштабирования
    • Подключение к кластеру
      • Обзор способов подключения
      • Настройка групп безопасности
      • Создание статического файла конфигурации
    • Установка приложений из Cloud Marketplace
      • Основы работы с Cloud Marketplace
      • Установка Argo CD
      • Установка Container Storage Interface для S3
      • Установка Crossplane
      • Установка External Secrets Operator
      • Установка Falco
      • Установка Filebeat
      • Установка Fluent Bit
      • Установка Gateway API
      • Установка GitLab Agent
      • Установка GitLab Runner
      • Установка HashiCorp Vault
      • Установка Ingress-контроллера Application Load Balancer
      • Установка Jaeger
      • Установка Kyverno & Kyverno Policies
      • Установка Loki
      • Установка Metrics Provider
      • Установка NodeLocal DNS
      • Установка Policy Reporter
      • Установка Thumbor
    • Сетевые сценарии
      • Обеспечение доступа к приложению, запущенному в кластере Kubernetes
      • Настройка контроллера сетевых политик Calico
      • Настройка контроллера сетевых политик Cilium
      • Настройка NodeLocal DNS для контроллера сетевых политик Cilium
    • Работа с постоянными томами
      • Динамическая подготовка тома
      • Статическая подготовка тома
      • Управление классами хранилищ
      • Увеличение размера тома для подов
      • Увеличение размера тома для контроллера StatefulSet
      • Подключение тома в блочном режиме
      • Интеграция с Object Storage
    • Управление кластером Kubernetes
      • Получение информации о кластере Kubernetes
      • Создание кластера Kubernetes
      • Изменение кластера Kubernetes
      • Создание пространства имен в кластере Kubernetes
      • Удаление кластера Kubernetes
    • Управление группой узлов
      • Информация об имеющихся группах узлов
      • Создание группы узлов
      • Подключение к узлу по SSH
      • Настройка автомасштабирования
      • Изменение группы узлов
      • Управление метками узлов кластера Kubernetes
      • Удаление группы узлов
    • Подключение внешних узлов к кластеру
  • Практические руководства
    • Все руководства
    • Создание нового Kubernetes-проекта в Yandex Cloud
    • Интеграция с Container Registry
    • Подпись и проверка Docker-образов Container Registry
    • Сканирование уязвимостей Container Registry при непрерывном развертывании приложений с помощью GitLab
    • Запуск рабочих нагрузок с GPU
    • Установка Ingress-контроллера NGINX с Let's Encrypt®
    • Установка Ingress-контроллера NGINX с сертификатом из Certificate Manager
    • Резервное копирование в Object Storage
    • Горизонтальное масштабирование приложения в кластере
    • Вертикальное масштабирование приложения в кластере
    • Развертывание и нагрузочное тестирование gRPC-сервиса с масштабированием
    • Работа со снапшотами
    • Интеграция с корпоративной зоной DNS
    • Автоматическое масштабирование DNS по размеру кластера
    • Настройка локального кеширования DNS
    • Проверка DNS Challenge для сертификатов Let's Encrypt®
    • Мониторинг кластера с помощью Prometheus и Grafana
    • Непрерывное развертывание контейнеризованных приложений с помощью GitLab
    • Изменение параметров сервера метрик (Metrics Server)
    • Использование продуктов Cloud Marketplace
      • Интеграция с Argo CD
      • Интеграция с Crossplane
      • Синхронизация с секретами Yandex Lockbox
      • Настройка Fluent Bit для работы с Cloud Logging
      • Настройка Gateway API
      • Настройка Application Load Balancer Ingress-контроллера
      • Использование Jaeger для трассировки запросов в Managed Service for YDB
      • Настройка Kyverno & Kyverno Policies
      • Использование Metrics Provider для трансляции метрик
  • Концепции
    • Взаимосвязь ресурсов сервиса
    • Релизные каналы и обновления
    • Шифрование секретов
    • Использование объектов API Kubernetes
      • Том
      • Сервис
    • Группа узлов
      • Автоматическое масштабирование группы узлов
      • Расселение подов с узла
      • Динамическое резервирование ресурсов для узла
      • Группы узлов с GPU
    • Сеть в Managed Service for Kubernetes
    • Внешние узлы кластера
    • Сетевые настройки и политики кластера
    • Автоматическое масштабирование
    • Квоты и лимиты
    • Рекомендации по использованию Managed Service for Kubernetes
  • Управление доступом
  • Правила тарификации
  • Справочник API
    • Аутентификация в API
    • gRPC (англ.)
      • Overview
      • ClusterService
      • NodeGroupService
      • VersionService
      • OperationService
    • REST (англ.)
      • Overview
      • Cluster
        • Overview
        • create
        • delete
        • get
        • list
        • listNodeGroups
        • listNodes
        • listOperations
        • start
        • stop
        • update
      • NodeGroup
        • Overview
        • create
        • delete
        • get
        • list
        • listNodes
        • listOperations
        • update
      • Version
        • Overview
        • list
  • Вопросы и ответы
    • Общие вопросы
    • Хранилище данных
    • Настройка и обновление
    • Автоматическое масштабирование
    • Ресурсы
    • Логи
    • Все вопросы на одной странице
  1. Пошаговые инструкции
  2. Работа с постоянными томами
  3. Увеличение размера тома для контроллера StatefulSet

Увеличение размера тома для контроллера StatefulSet

Статья создана
Yandex Cloud
  • Создайте контроллер StatefulSet
  • Внесите изменения в настройки контроллера
  • Создайте контроллер с новыми настройками PersistentVolumeClaim

Чтобы увеличить размер тома для контроллера StatefulSet:

  1. Создайте контроллер StatefulSet.
  2. Внесите изменения в настройки контроллера.
  3. Создайте контроллер с новыми настройками PersistentVolumeClaim.

Важно

В процессе выполнения инструкции количество подов контроллера будет уменьшено до нуля, что приведет к недоступности сервиса.

Создайте контроллер StatefulSet

  1. Создайте файл 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
    
  2. Создайте контроллер:

    kubectl apply -f sts.yaml
    

    В результате выполнения команды будет создан контроллер StatefulSet с именем ubuntu-test, состоящий из трех подов. Размер PersistentVolumeClaim для каждого пода — 1 Гбайт.

  3. Убедитесь, что поды контроллера перешли в статус 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
    
  4. Убедитесь, что диски для объектов с префиксами 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 |             |
    +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+
    

Внесите изменения в настройки контроллера

  1. Сохраните текущую конфигурацию контроллера ubuntu-test в файл ubuntu-test-sts.yaml:

    kubectl get sts ubuntu-test --output yaml > ubuntu-test-sts.yaml
    
  2. В файле 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 изменять не нужно.

  3. Уменьшите количество подов контроллера ubuntu-test до нуля:

    kubectl scale statefulset ubuntu-test --replicas=0
    
  4. Дождитесь завершения масштабирования контроллера. Чтобы наблюдать за состоянием удаления подов, используйте команду:

    kubectl get pods
    

    Масштабирование контроллера завершено, когда результат выполнения команды не показывает подов с префиксом pod/ubuntu-test-.

  5. Убедитесь, что диски для объектов с префиксами 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  |                      |             |
     +----------------------+--------------------------------------------------+-------------+-------------------+--------+----------------------+-------------+
    
  6. Удалите текущий контроллер StatefulSet ubuntu-test:

    kubectl delete statefulset ubuntu-test --cascade=orphan
    
  7. Убедитесь, что контроллер StatefulSet удален:

    kubectl get sts
    

Создайте контроллер с новыми настройками PersistentVolumeClaim

  1. Обновите настройки для каждого 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"}}}}'
    
  2. Создайте контроллер StatefulSet с увеличенным размером хранилища:

    kubectl apply -f ubuntu-test-sts.yaml
    
  3. Убедитесь, что создан новый контроллер 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
    
  4. Убедитесь, что 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
    

Была ли статья полезна?

Language / Region
Проект Яндекса
© 2023 ООО «Яндекс.Облако»
В этой статье:
  • Создайте контроллер StatefulSet
  • Внесите изменения в настройки контроллера
  • Создайте контроллер с новыми настройками PersistentVolumeClaim