API выселения Kubernetes не могут полностью объяснить здоровье кластера Elasticsearch? - PullRequest
0 голосов
/ 28 сентября 2018

Я хочу выполнить автоматическое обновление прокрутки кластера Kubernetes таким образом, чтобы он не знал подробностей о приложениях, запущенных в кластере.В принципе, PodDisruptionBudget должен облегчить это.

Вот загвоздка: на этом кластере Kubernetes работает кластер Elasticsearch, и я не могу найти способ правильно выразить «ОК, чтобы высвободить сигнал ES Pod».В частности, это, кажется, тот случай, когда сигналы "этот Pod могут принимать трафик" и "этот Pod могут быть выселены" не могут быть оба представлены как readinessProbe.

ThisИндексы ES-кластера имеют number_of_replicas: 1, а есть PDB с maxUnavailable: 1.Каждый из модулей ES определяет тест готовности, который запрашивает /_cluster/health?wait_for_status=yellow.

«Как есть», если мы исключаем модуль ES, модуль замены заменяет кластер ES, запускается и возвращается в состояние готовности, покаКластер ES в целом по-прежнему желтый и реплицирует осколки (и, следовательно, все еще небезопасно выселять какие-либо дополнительные блоки ES).

Кто-нибудь успешно справлялся с этим?Я неправильно понимаю семантику зондов / PDB?


Некоторые варианты, которые мы рассмотрели:

  • Использование wait_for_status=green в тесте готовности означало бы, что все Блоки ES становятся не готовыми, когда состояние кластера ES имеет желтый цвет.
  • Увеличение индексов ES с number_of_replicas до 2 лишь незначительно снижает вероятность повторного обновления, повреждающего кластер ES (допустим, эти осколкимедленно копируются).
  • То же самое с установкой большого initialDelaySeconds на readinessProbe.Это может привести к тому, что время завершения репликации осколка будет меньше.
  • То же самое с использованием крюка preStop ( - это подход, который, по-видимому, занимает диаграмма Хелма сообщества ) и длинныйльготный период.
  • Уменьшение значения maxUnavailable до 0 PDB означает, что непрерывное обновление должно запускаться человеком, который может удалить PDB, оценить состояние кластера ES и т. д.
  • Гипотетический, evictablenessProbe, который проверил wait_for_status=green, будет работать, но такого API не существует.

1 Ответ

0 голосов
/ 29 сентября 2018

Прежде всего, во что бы то ни стало, вы сэкономите массу времени и усилий и воспользуетесь таблицей Шлема: https://github.com/helm/charts/tree/master/incubator/elasticsearch

Но на всякий случай, если вы не можете или если это помогает другим,Я думаю, что вы ищете /_cluster/health?local=true, например:

    readinessProbe:
      httpGet:
        path: /_cluster/health?local=true
        port: 9200

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...