Обновление компонентов кластера Kubernetes без параметра -e 'manual_restore_only=true'
Чтобы выполнить обновление компонентов кластера Kubernetes без параметра -e 'manual_restore_only=true':
- Выполните подготовку к обновлению:
- Убедитесь, что выполнено обновление KUMA с версии 4.0.х до 4.2.х с помощью установщика install.sh и файла инвентаря k0s.inventory.yaml.
- Подготовьте выделенную машину ansible-controller, с которой вы будете запускать скрипт обновления, и убедитесь, что машина не является участником кластера. Скрипт обновления предусматривает перезагрузку всех хостов кластера. Если ansible-controller будет машиной внутри кластера, во время штатной перезагрузки хостов кластера выполнение скрипта будет прервано и процесс установки новых версий компонентов Kubernetes аварийно завершится.
- Убедитесь, что на выделенной машине ansible-controller и на master-controller достаточно свободного дискового пространства для размещения резервной копии.
- Создайте резервную копию Ядра KUMA вручную на случай непредвиденных сбоев.
Данные метрик в резервную копию не входят и в кластер Kubernetes не переносятся. При обновлении компонентов кластера Kubernetes данные метрик будут утрачены.
Если вам критически важны данные метрик, обратитесь к специалистам Службы технической поддержки перед обновлением компонентов кластера Kubernetes.
- Укажите значение параметра
backup_timeoutв файле инвентаря k0s.inventory.yaml в секцииvars.
- Выполните обновление:
- На выделенной машине ansible-controller перейдите в директорию установщика 4.2 и запустите скрипт cluster_upgrade.sh, передав в качестве параметра имя актуального файла инвентаря k0s.inventory.yaml:
./cluster_upgrade.sh k0s.inventory.yaml - В консоли командной строки подтвердите наличие резервной копии Ядра KUMA и согласие с выполнением обновления, указав yes.
В процессе обновления будет автоматически создана резервная копия Ядра KUMA autobackup.tar.gz. Скрипт создает резервную копию Ядра KUMA на машине master-controller в директории /root/k0s/, а затем переносит на выделенную машину ansible-controller, с которой выполняется обновление компонентов Kubernetes, в директорию со скриптом. В процессе автоматического восстановления данных Ядра KUMA в новом кластере Kubernetes также используется директория установщика и директория /root/k0s/ на машине master-controller.
Из резервной копии в дальнейшем будет автоматически выполнено восстановление Ядра KUMA в новом кластере Kubernetes. Если в процессе обновления произойдет сбой, вы сможете поместить созданную вручную резервную копию в файл autobackup.tar.gz, расположенный на машине ansible-controller в директории со скриптом, и перезапустить скрипт cluster_upgrade.sh.
Перезапись созданной резервной копии автоматически не выполняется.
- На выделенной машине ansible-controller перейдите в директорию установщика 4.2 и запустите скрипт cluster_upgrade.sh, передав в качестве параметра имя актуального файла инвентаря k0s.inventory.yaml:
Обновление компонентов кластера Kubernetes выполнено.
Восстановление при сбое
Доступны следующие сценарии восстановления в случае сбоя:
- Сбой при обновлении компонентов кластера Kubernetes. Вы можете использовать любой из вариантов восстановления:
- Поместить созданную вручную резервную копию в файл autobackup.tar.gz, расположенный на машине master-controller в директории со скриптом, и перезапустить скрипт cluster_upgrade.sh. Скрипт примет созданную вручную резервную копию в обработку и продолжит процедуру обновления.
- Запустить скрипт cluster_upgrade.sh с указанием параметра
-e 'manual_restore_only=true'и выполнить восстановление вручную.
- Сбой при запуске Ядра KUMA после успешного обновления кластера Kubernetes.
Если вы хотите, чтобы скрипт автоматически повторил удаление и новую установку кластера, необходимо остановить службу k0s на любом из узлов кластера и удалить на этом узле исполняемый файл k0s. Скрипт будет интерпретировать состояние кластера как неконсистентное и выполнит удаление и установку кластера с использованием ранее созданного файла autobackup.tar.gz.
Для остановки службы k0s на контроллерах кластера и хостах, совмещающих роли контроллера и рабочего узла, необходимо использовать следующие команды:
sudo systemctl stop k0scontroller.servicesudo rm /usr/bin/k0sДля остановки службы k0s и удаления бинарного файла k0s на выделенных рабочих узлах необходимо использовать следующие команды:
sudo systemctl stop k0sworker.servicesudo rm /usr/bin/k0sУдаление кластера выполняется только после получения корректного файла резервной копии или явного отказа от автоматического резервного копирования и восстановления применением параметра
-e 'manual_restore_only=true'и согласия на продолжение обновления без выполнения резервного копирования. Если у вас отсутствует резервная копия, созданная вручную, в случае сбоя все данные будут утрачены.