Kubernetes, Minikube, Helm, Consul: No cluster leader

Настал черёд, мои друзья, поговорить о виртуальности. Расскажу вам одну историю, как решил проблему с вот такой связкой виртуальности. Имеем:

  • kubernetes
  • minikube
  • helm
  • consul

Я немного могу путать с тем, что из чего произрастает, но используются точно все четыре технологии.

В какой-то момент перестал запускаться Consul. Причём он был задеплоен только на одном pod-е, но при старте не мог выбрать лидера:

Причём IP, с которым он не может связаться, вообще какой-то странный. Адрес 172.17.0.4 не связан ни с одним pod-ом.

Для начала я попытался удалить Consul:

Установил заново:

В этой статье вся работа идёт с пространством имён “mynamespace”. У вас будет другое, ваше пространство имён. Соответственно вам нужно будет во всех командах поправить “mynamespace” на название вашего пространства имён.

Ошибка осталась. Странно. Достаточно долго рыскал по различным сайтам, документации, гуглу и stackoverflow.

Пытался шаманить с «peers.json»,  чтобы вручную поправить IP нод, но ничего не получилось. Вот тут целая статья про это в официальной документации.

Затем нашёл такую штуку:

Вот он, наш левый IP. Пытаемся удалить:

Ничего не получается. Жаль. Про raft можно прочесть вот здесь.

В конечном итоге нашёл причину. Она оказалась в том, что в kubernetes существует такая штука как persistent volumes. Когда мы удаляем consul через helm, то persistent volumes остаётся. При следующей установке consul каким-то образом подхватываются из этих persistent volumes старые файлы со старыми настройками и старыми ip.

Посмотреть список существующих сейчас persistent volumes можно командой:

Затем нужно удалить persistent volumes, которые относятся к consul:

Надеюсь, моя статья будет вам полезна. Мне она точно уже полезна:) Я пока только начал разбираться со всеми этими технологиями, так что мог чего напутать, но свою проблему я точно решил способом, описанным в этой статье.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *