Аварійне відновлення роботи кластера у випадку збоїв

Ця сторінка надає практичне керівництво з відновлення кластера, який знаходиться в аварійному стані.

1. Загальна інформація

Для процедури відновлення кластера використовуйте наступну документацію Платформи:

У випадку аварії кластера, важливо мати доступ до ресурсів відновлення. Оскільки актуальний стан кластера зберігається на ресурсах (віртуальній машині), без них відновлення не буде можливим. Уникнути втрати даних можна лише забезпечивши, що всі критично важливі ресурси доступні та функціональні.

2. Підготовка кластера до видалення

2.1. Середовище AWS

Підготовка до видалення кластера у хмарному сервісі AWS включає критичний етап видалення тегів з EC2 Snapshots. Виконайте наступні кроки для ефективного видалення:

  1. Відкрийте консоль AWS та перейдіть до розділу EC2 Snapshots.

    ebs snapshot common view

  2. Використовуйте поле пошуку для введення назви кластера (як показано на зображенні, пошук за назвою 1-9-7-42). Фільтруйте результати, щоб відобразити лише ті snapshots, що належать вашому кластеру.

    filtered snapshot by name view

  3. Пройдіться по списку відфільтрованих snapshots. Для кожного з них використовуйте опцію Manage Tags та видаліть тег у форматі: kubernetes.io/cluster/<cluster-name>-<hash>: owned, де <cluster-name> — назва кластера, <hash> — хеш.

    Зображення нижче демонструють приклад із тегом kubernetes.io/cluster/1-9-7-42-d2gdt: owned.

    ebs snapshot tag view
    Зображення 1. Manage Tags
    ebs snapshot delete tag
    Зображення 2. Manage Tags
    ebs snapshot tag deleted
    Зображення 3. Manage Tags
Повторіть ці кроки для всіх snapshots, які асоціюються з вашим кластером. Такий підхід забезпечить чисте та безпечне видалення кластера з урахуванням усіх пов’язаних ресурсів.

2.2. Середовище vSphere

Openshift-кластер, що розгорнуто у середовищі vSphere, використовує інший підхід до зберігання даних, тому передумов для видалення немає.

3. Процедура видалення кластера

Перед тим, як розпочинати видалення кластера, упевніться, що виконуєте дії з інстансу (jumpbox), з якого здійснювалася інсталяція кластера. Нижче наведено детальні кроки для безпечного видалення кластера на різних платформах, зокрема AWS або vSphere.

3.1. Середовище AWS

  1. Запуск контейнера openshift-install:
    Дотримуйтеся інструкцій на сторінці Запуск контейнера openshift-install для налаштування та запуску контейнера, необхідного для видалення кластера.

  2. Виконання команди видалення кластера:
    У терміналі інстансу виконайте команду:

    $ ./openshift-install destroy cluster --dir /tmp/openshift-cluster/cluster-state

    Це ініціює процес видалення кластера.

  3. Перевірка видалення кластера:
    По завершенню, ви маєте отримати повідомлення схоже на наступне, що підтверджує успішне видалення:

    level=info msg=Time elapsed: 10min

3.2. Середовище vSphere

  1. Перехід до інстансу інсталяції:
    Переконайтеся, що ви виконуєте дії з інстансу, з якого кластер був розгорнутий. Дотримуйтеся інструкцій на сторінці Запуск OKD4-інсталера та розгортання порожнього кластера OKD4.

  2. Команда видалення кластера:
    Запустіть наступну команду у терміналі інстансу для ініціації процесу видалення кластера:

    openshift-installer destroy cluster

4. Інсталяція кластера та розгортання Платформи

Для інсталяції кластера та розгортання платформи на різних типах хмарних провайдерів, використовуйте наступну документацію:

Версія Платформи має бути такою ж, як і та, що була встановлена на кластер до його видалення.

5. Відновлення платформи з останніх доступних резервних копій

Відновлення платформи рекомендовано виконувати з інстансу, де проводилася процедура інсталяції кластера/Платформи

Після встановлення Платформи, можна розпочати відновлення центральних компонент та реєстрів із резервних копій. Для цього:

  1. Збережіть архів, що містить Helm chart для відновлення з останніх резервних копій.

  2. Актуалізуйте логін через oc client у терміналі інстансу.

    1. Відкрийте консоль Openshift та у правому верхньому куті, де профіль користувача, натисніть Copy Login Command.

    2. Пройдіть авторизацію через Keycloak/kubeadmin.

    3. Далі натисніть Display token, скопіюйте рядок Log in with this token, вставте його у терміналі та пройдіть процедуру логіну.

  3. Перейдіть у директорію зі збереженим архівом та виконайте наступну команду для його розпакування.

    unzip disaster-recovery.zip
  4. Виконайте наступну команду для запуску процедури відновлення платформних компонент з останніх резервних копій:

    helm install disaster-recovery disaster-recovery -n velero

    У випадку, коли потрібно використати не останню версію резервної копії, а вибрати з наявних для центральних компонент, команду можна доповнити наступними ключами:

    • для компонента user-management

      --set umBackupName="<назва бекапу>"#приклад
      --set umBackupName="velero-usermanagement-20231206093235"
    • для компонента control-plane

      --set cpBackupName="<назва бекапу>"#приклад
      --set cpBackupName="control-plane-2023-12-04-18-53-02"
    • для компонента control-plane-nexus

      --set cpNexusBackupName="<назва бекапу>"#приклад
      --set cpNexusBackupName="velero-controlplanenexus-20231206095034"

    Приклад команди, де вибрана версія резервної копії для компонента control-plane:

    helm install disaster-recovery ./disaster-recovery -n velero --set cpBackupName="control-plane-2023-12-04-18-53-02"

    У випадку, де для одного з компонент (control-plane) вибрана версія для двох інших компонент (control-plane-nexus, user-management), процес самостійно обере останні доступні версії резервних копій.

    Ключі можна поєднувати через пробіл:

    --set cpBackupName="control-plane-2023-12-04-18-53-02"  --set umBackupName="velero-usermanagement-20231206093235"
  5. Після виконання команди, зачекайте коли под disaster-recovery в Openshift проєкті velero буде у статусі completed.

  6. Увійдіть до адміністративної панелі Control Plane, відкрийте розділ Керування Платформою > Швидкі посилання, перейдіть до Сервісу розгортання конфігурації (Jenkins) та для кожного з наявних реєстрів виконайте кроки з відновлення, описані у розділі Відновлення реєстру (Restore).