VK Cloud logo
Обновлена 15 апреля 2024 г. в 08:50

Обновление аддона Kube Prometheus Stack

В кластерах Cloud Containers доступно несколько версий аддона Kube Prometheus Stack. Обновление этого аддона средствами VK Cloud недоступно, но можно обновить аддон вручную.

Для обновления аддона Kube Prometheus Stack с версии 36.2.0 на версию 54.2.2 необходимо удалить текущую версию аддона и затем установить новую версию. Поэтому процесс обновления включает в себя подготовку окружения текущей версии аддона, чтобы сохранить его и затем переиспользовать с новой версией аддона.

Подготовительные шаги

  1. Если у вас уже есть существующий кластер Cloud Containers с аддоном Kube Prometheus Stack, который нужно обновить, пропустите этот шаг.

    В противном случае создайте тестовый кластер, в котором будет выполняться обновление аддона:

    1. Создайте кластер Cloud Containers версии 1.26.5.

      При создании кластера выберите опцию Назначить внешний IP. Прочие параметры кластера выберите на свое усмотрение.

    2. Установите в кластер аддон Kube Prometheus Stack версии 36.2.0.

      Выполните быструю установку аддона (без редактирования кода настройки аддона).

  2. Убедитесь, что вы можете подключиться к кластеру с помощью kubectl.

    Для подключения используйте файл конфигурации кластера (kubeconfig), загруженный из личного кабинета VK Cloud.

  3. Проверьте, что аддон доступен и работает. Для этого получите доступ к веб-интерфейсу Grafana.

  4. Установите Helm версии 3.0.0 или выше, если утилита еще не установлена.

    Выберите для установки версию Helm, которая совместима с кластером.

  5. Задайте переменную среды окружения, указывающую на kubeconfig для кластера. Это упростит работу с kubectl и helm при обновлении аддона.

    Путь к вашим файлам kubeconfig может отличаться от примера ниже.

    export KUBECONFIG="/home/user/.kube/kubernetes-cluster-1234_kubeconfig.yaml"

1. Получите информацию, необходимую для обновления аддона

  1. Перейдите в режим редактирования кода настройки аддона.

    Не изменяйте код настройки аддона.

    Запишите следующие сведения:

    1. Название приложения (по умолчанию kube-prometheus-stack).
    2. Название пространства имен (по умолчанию prometheus-monitoring).
    3. Полный код настройки аддона.
  2. Задайте переменные среды окружения, указывающие на эти названия приложения и пространства имен. Это упростит дальнейшую работу при обновлении аддона.

    Значения ваших переменных могут отличаться от примера ниже.

    export CHART_NAME="kube-prometheus-stack"export NAMESPACE="prometheus-monitoring"
  3. Получите информацию о используемых аддоном Persistent Volume Claims (PVCs) и постоянных томах (persistent volumes, PVs). Они используются для хранения собираемых метрик, а также других данных, необходимых для работы аддона.

    kubectl -n $NAMESPACE get pvc

    В выводе команды будет содержаться список PVCs (NAME) и соответствующих им PVs (VOLUMES) с указанием размера томов (CAPACITY). Запишите эту информацию, она понадобится позднее.

2. Подготовьте окружение аддона к обновлению

Тома для аддона по умолчанию создаются с применением политики освобождения Retain, если в код настройки аддона не было внесено изменений, связанных с классом хранения. Поэтому, если просто удалить аддон, то постоянные тома с данными будут удалены. Это приведет к потере накопленных за время работы аддона метрик, а также других данных, необходимых для работы аддона.

Кроме того, следующие ресурсы Kubernetes, которые также используются аддоном, могут препятствовать установке новой версии аддона:

  • Набор Custom Resource Definitions (CRDs), необходимый для работы аддона.
  • Набор Persistent Volume Claims (PVCs), позволяющий аддону использовать постоянные тома.

Перед обновлением аддона защитите от удаления постоянные тома, которые он использует, а также удалите упомянутые ресурсы Kubernetes одним из приведенных ниже способов.

  1. Создайте файл с кодом скрипта:

    Скрипт выполняет следующие действия:

    1. Обнаруживает постоянные тома, которые связаны с PVCs, созданными в пространстве имен, в котором установлен аддон. Для этих постоянных томов скрипт задает политику освобождения Retain. Это нужно, чтобы эти тома не были удалены при удалении текущей версии аддона.
    2. Удаляет Helm-чарт (chart) текущей версии аддона. Это нужно, чтобы успешно удалить наборы PVCs и CRDs, которые используются аддоном.
    3. Удаляет набор PVCs из пространства имен, в котором был установлен аддон. Это нужно, чтобы можно было отвязать PVs от PVCs и потом переиспользовать эти PVs с новой версией аддона.
    4. Очищает ссылки на удаленные PVCs у постоянных томов, которые были связаны с этими PVCs. Эти постоянные тома станут доступны для связывания (статус PVs: Available) и будут переиспользованы новой версией аддона после ее установки.
    5. Удаляет набор CRDs, который использовался аддоном.
    6. Удаляет пространство имен prometheus-monitoring, если скрипт был запущен для этого пространства имен.
  2. Сделайте файл с кодом скрипта исполняемым:

    chmod +x prepare-for-addon-update.sh
  3. Определите, с какими параметрами будет выполнен скрипт:

    bash prepare-for-addon-update.sh -h

    Будет выведена справка, в которой будут указаны доступные параметры и их значения по умолчанию:

    • -h: вывод справки.
    • -k: путь к файлу kubeconfig. Значение по умолчанию извлекается из переменной среды окружения $KUBECONFIG, если она задана.
    • -c: название контекста kubeconfig, который нужно использовать при работе с кластером. Значение по умолчанию: пустая строка.
    • -n: название пространства имен, в котором установлен аддон. Значение по умолчанию: prometheus-monitoring.
    • -r: название приложения, с которым установлен аддон. Совпадает с именем Helm-чарта для аддона. Значение по умолчанию: kube-prometheus-stack.
    • -d: значение аргумента --dry-run для kubectl. Значение по умолчанию: none. Используйте server или client для тестового запуска скрипта: в кластер не будет внесено никаких изменений.
  4. Выполните скрипт.

    Выполните команду, указав нужные параметры. Если вас устраивает значение параметра по умолчанию, то параметр можно опустить.

    bash prepare-for-addon-update.sh \    -k <путь к файлу kubeconfig> \    -c <название контекста kubeconfig> \    -n <название пространства имен> \    -r <название приложения> \    -d <значение аргумента --dry-run для kubectl>

    Будут выведены подробные сообщения о работе скрипта. В том числе в выводе должны содержаться следующие сообщения:

    Setting retain policy for the Prometheus PVs...Deleting Prometheus chart...Deleting Prometheus PVCs...Clearing Prometheus PV claim references...Clearing Prometheus CRDs...Deleting Prometheus namespace...Completed!

3. Обновите аддон на новую версию

  1. Удалите текущую версию аддона, пользуясь интерфейсами VK Cloud.

  2. Установите в кластер аддон Kube Prometheus Stack версии 54.2.2.

    Выполните стандартную установку следующим образом:

    1. Задайте те же названия приложения и пространства имен, которые использовались при установке аддона предыдущей версии.

    2. Изучите код настройки аддона предыдущей версии, полученный ранее. Найдите фрагменты кода, которые отвечают за настройку хранилища для следующих компонентов аддона:

      grafana:  ...  persistence:    enabled: true    storageClassName: "csi-ceph-hdd-gz1"    accessModes:    - ReadWriteOnce    size: 1Gi  ...
    3. Изучите код настройки новой версии аддона, которую планируется установить.

      Если фрагменты кода, которые отвечают за настройку хранилища, отличаются от полученных ранее, то скорректируйте их. Настройки хранилища для Grafana, Alert Manager и Prometheus должны в точности совпадать с аналогичными настройками, которые использовались для аддона предыдущей версии.

    4. (Опционально) Внесите иные изменения в код настройки аддона.

      Если вы указали пароль для доступа к Grafana в поле grafana.adminPassword при установке аддона предыдущей версии, указывать его повторно не нужно. Новая версия аддона будет использовать прежние PVs в качестве хранилища, поэтому пароль останется прежним. Установка новой версии аддона не поменяет пароль для доступа к Grafana, даже если оставить это поле пустым: будет сгенерирован секрет с паролем для Grafana, но он не будет использован.

    5. Установите аддон.

      Процесс установки может занять длительное время. Дождитесь его завершения.

  3. Получите информацию о используемых аддоном Persistent Volume Claims (PVCs) и постоянных томах (persistent volumes, PVs):

    kubectl -n $NAMESPACE get pvc

    Вывод команды должен быть аналогичен выводу команды, которая выполнялась ранее для аддона предыдущей версии. Так, PVC alertmanager... должен быть связан с тем же PV, который использовался Alert Manager ранее. Для Prometheus и Grafana — аналогично.

4. Проверьте работоспособность аддона после обновления

Получите доступ к веб-интерфейсу Grafana. Для подключения используйте тот же пароль, который использовался с аддоном предыдущей версии. Если вы забыли пароль от Grafana, сбросьте его.

Успешное подключение к Grafana свидетельствует об успешном обновлении аддона.

Удалите неиспользуемые ресурсы

Работающий кластер Cloud Containers тарифицируется и потребляет вычислительные ресурсы. Если вы создали кластер в тестовых целях и он вам больше не нужен: