Аварийное восстановление Kops Kubernetes Master Node на AWS - PullRequest
0 голосов
/ 11 октября 2018

У меня в настоящее время кластер HA (с тремя несколькими мастерами, по одному на каждый AZ), развернутый на AWS через kops.Kops развертывает кластер K8S с модулем для etcd-событий и модулем для etcd-сервера на каждом главном узле.Каждый из этих модулей использует подключенный том.

Все работает хорошо, например, когда мастер умирает, группа автомасштабирования создает другой мастер-узел в том же AZ, который восстанавливает свой том и присоединяется к кластеру.У меня проблема в связи с катастрофой, выходом из строя AZ.

Что произойдет, если у AZ возникнут проблемы?Я периодически делаю снимки томов EBS, но если я создаю новый том из снимка (с правильными тегами, которые нужно обнаружить и присоединить к новому экземпляру), новый экземпляр монтирует новые тома, но после этого он не можетприсоединиться к старому кластеру.Мой план состоял в том, чтобы создать лямбда-функцию, которая была вызвана событием CloudWatch, которое создает новый главный экземпляр в одном из двух безопасных AZ с томом, смонтированным из моментального снимка старого тома EBS.Но в этом плане есть ошибки, потому что кажется, что я игнорирую что-то о Raft, Etcd и их поведении.(Я говорю это, потому что у меня есть ошибки от других главных узлов, и новый узел не может присоединиться к кластеру).

Предложения?

Как теоретически восстановитьСитуация одиночной АЗ катастрофы и ситуация, когда все мастера погибли?У меня есть снимки EBS.Достаточно ли их использовать?

1 Ответ

0 голосов
/ 11 октября 2018

Я не уверен, как именно вы восстанавливаете неисправный узел, но технически первое, что вы хотите восстановить, это ваш узел etcd, потому что именно там хранится все состояние Kubernetes.

Поскольку ваш кластер запущен и работает, вам не нужно восстанавливать его с нуля, вам просто нужно удалить старый узел и добавить новый узел в etcd.Вы можете узнать больше о том, как это сделать здесь .На самом деле вам не нужно восстанавливать какой-либо старый том на этом узле, поскольку он будет синхронизироваться с другими существующими узлами.

Затем, после этого, вы можете запускать другие службы как kube-apiserver, kube-controller-manager и т. Д..

Сказав, что если вы сохраняете тот же IP-адрес и те же физические конфигурации, вы сможете восстановить без удаления узла etcd и добавления нового.

...