В процессе работы периодически возникает необходимость перезагрузки, установки обновлений или обновления операционной системы на рабочих узлах и контроллерах кластера Kubernetes. В этой статье описывается порядок обслуживания хостов, позволяющий минимизировать простой Ядра KUMA в отказоустойчивой конфигурации.
Перед вводом хостов в обслуживание необходимо создать резервную копию Ядра KUMA.
Обслуживание контроллеров
Контроллеры кластера требуется обслуживать по одному. Перед началом обслуживания контроллера дополнительные действия не требуются. После выполнения обслуживания или обновления следует убедиться, что служба контроллера успешно запущена, проверив состояние сервиса с помощью следующих команд:
sudo systemctl status k0scontroller
sudo k0s status
После восстановления обслуживаемого контроллера можно выполнять обслуживание следующего контроллера. При поочередном обслуживании контроллеров перерывов доступа к Ядру KUMA не возникает.
Обслуживание рабочих узлов
Рабочие узлы кластера требуется выводить в обслуживание по одному.
Чтобы выполнить обслуживание рабочих узлов:
sudo k0s kubectl get nodes
Все рабочие узлы должны быть в состоянии ready, иначе вывод из работы последующих узлов может привести к недоступности Ядра KUMA.
sudo k0s kubectl cordon <имя_рабочего_узла>
После этого в выводе команды sudo k0s kubectl get nodes узел будет отображаться в статусе Ready,SchedulingDisabled.
sudo k0s kubectl get pods -n kuma -o wide
sudo k0s kubectl rollout restart deployment core-deployment -n kuma
Во время переноса Ядра KUMA на другой рабочий узел доступ к Ядру KUMA будет приостановлен примерно на 10 минут.
sudo k0s kubectl get pods -n kuma -o wide
Статус пода должен быть Running, имя рабочего узла в столбце NODE должно измениться.
sudo k0s stop
sudo k0s start
sudo systemctl status k0sworker
sudo k0s status
k0sworker.service должен быть в состоянии active (running).
k0s status должен вернуть Status: Running.
sudo k0s kubectl uncordon <имя_рабочего_узла>
sudo k0s kubectl get nodes
У обновленного рабочего узла должен быть статус ready.
sudo k0s kubectl get volume -n longhorn-system -o json | jq '.items[0].status.robustness'
Статус должен быть healthy. Если статус degraded, то одна из реплик недоступна или пересобирается.
sudo k0s kubectl get engine -n longhorn-system -o json | jq '.items[0].status.rebuildStatus'
sudo k0s kubectl get replicas -n longhorn-system
Все реплики должны быть в статусе running.
Обслуживание рабочего узла выполнено. Если обслуживаемый рабочий узел готов и том Ядра KUMA находится в статусе healthy, вы можете переходить к обслуживанию следующего рабочего узла.
Обслуживание балансировщика трафика
Обслуживание балансировщика всегда связано с перерывом доступа к Ядру KUMA как со стороны пользователей, так и со стороны сервисов KUMA. На время выключения балансировщика становится невозможен перенос пода с Ядром KUMA с одного рабочего узла на другой.
Если планируется длительный простой основного балансировщика или существенные обновления, мы рекомендуем сделать следующее:
В момент переключения трафика текущие сессии могут прерваться. Если наблюдаются неполадки, вы можете указать прежние IP-адреса и продолжить работу на основном балансировщике в прежней конфигурации.
Последний шаг может не понадобится, если нет технической необходимости в возврате в эксплуатацию бывшего основного балансировщика, то есть производится однократная замена балансировщика на обновленный хост.
Поскольку требования к ресурсам балансировщика трафика минимальны, мы рекомендуем иметь резервный клон виртуальной машины с балансировщиком для быстрого восстановления доступа к Ядру KUMA в случае проблем с основной виртуальной машиной.
В начало