Pull to refresh

Comments 19

На Bare-Metal конфигурации достаточно ingress контроллера с включенной HostNetwork конфигурацией. Для отказоустойчивости можно развернуть как DaemonSet. Для отказоустойчивой конфигурации нужны три мастера. Metallb ненужный костыль, если разворачивать ingress как я выше написал.

В этой статье я так и разворачиваю ingress-nginx. Решение с MetalLb было в предыдущей :)

Для отказоустойчивой DNS балансировки успешно использую сервис AWS Route53. Он умеет в Health-check серверов и соответственно подправляет запись в DNS. Не сочтите за рекламу :)

Интересно, спасибо. А что по стоимости?

тоже интересно, тут много расписано, куча позиций считанные центы но одна слишком заметная
Traffic Flow
$50.00 per policy record / month

не совсем понял что это но полагаю это опционально

Я свой костыль пилил https://github.com/webtor-io/dnslb
Идея простая, отслеживает живые ноды в кластере на которых работают живые же поды ingress и обновляет соответствующие A-записи в Cloudflare. ingress должен работать с HostNetwork и в DaemonSet. Единственным плюсом подобного решения является бесплатность.

наверное стоит сделать статью по установке Rancher и установки кластера из него в пару кликов. Вся статья уместится в одну-две страницы

Может не стоило переводить control plane как плоскость управления?

А зачем было ломать systemd-resolved? Это вроде бы привычная вещь для свежих образов. Kubespray наоборот на Ubuntu будет ждать настройку с ним.

systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
и смены на /run/systemd/resolve/resolv.conf - решает эту проблему навсегда

Спасибо большое за статью, но к сожалению данный тесты никоем образом не покажу уровень доступности вашей схемы. Подключайте мониторинг, настройте дашборды с перцентелями ошибок и нагрузите чем-то типа гатлинга или к6 и только тогда начинайте вырубать мастера. В таком случае сразу поймете, насколько вы проседаете и самое главное где.
С радостью посмотрел бы на эти цифры, в продолжении статьи.
Так же возможно будет полезен данный проект - прорабатываем автоматизацию развертывания кубов в облаках, в частности Яоблако.

В документациях говорят о том, что решение с MetalB на балансировку api не совсем корректное: если будут какие-то проблемы с daemonset, то ip не поднимется и мы получим тыкву (c Ingress такая же история). В интернетах предлагаю решение kube-vip, которое запускается как static pod и позволяет перевозить ip между мастерами. Вот как это включается на kubespray https://github.com/kubernetes-sigs/kubespray/blob/master/docs/kube-vip.md

По идеи это как metalB, только static под на мастер-ноде, но считается, более надёжным

Надо будет опробовать kube-vip, спасибо)

Знаю еще один проект с разворачиванем кубер-кластера в облаках, с мониторингом, алертами и тд.

https://taikun.cloud/

Классная статья!

Добавлю лишь несколько замечаний

  • Если etcd-кластер разворачивается на мастер нодах, то их количество должно быть нечетное - т.е. минимум 3, в текущем примере выход из строя одной из мастер-нод переведет оставшуюся ноду etcd в readonly состояние - не будет похоже на HA. Размещение etcd на рабочих нодах, как в примере из статьи, крайне не рекомендуется с точки зрения безопансости.

  • Не обязательно разворачивать ингресс на каждой ноде - зачастую такого количества ингресов не нужно, можно использовать и Deployment. Без сервиса с типом LoadBalancer лучшим выбором будет hostport, а задачу контроля доступности возложить на балансировщик

  • Простейшим способом организовать HA для входящего трафика - использовать балансировщик, например haproxy и, используя его возможности по активным проверкам доступности апстримов, балансировать трафик на hostport каждой ноды. Например, запустить 2 инстанса haproxy с публичными IP и использовать DNS Roundrobin в качестве простейшего решения

  • В качестве DNS сервера можно использовать PowerDNS - он поддерживает активные health-check и может на основе них возвращать разный набор A-записей. Единственная проблема организации HA на уровне DNS сохраняется - это относительно продолжительное время обновления записей в кеширующих DNS, но плюсы тоже на месте - восстановление доступности сервисов произойдет без человеческого вмешательства

  • Если нас интересует только HA для балансировщиков, то можно настроить "плавающий" ip с использованием keepalived между этими двумя балансировщиками. В случае отказа основного, ip спрыгнет на резервный и трафик продолжит ходить через второй сервис. В таком случае не потребуется приплясывать с DNS

Большое человеское спасибо, за статью! Для начинающих то что надо. Только есть вопросы, не обязательно к автору. (для понимания и развития).

  1. Будет ли работать на REDOS? (Отечественный форк redhat).

  2. Если CentOS- нужно ли отключать Selinux?

  3. Для чего нужно включать переадресацию IPv4?

  1. Это можно определить только опытным путем. Вот тут список поддерживаемых ОС

  2. В предыдущей статье я устанавливал куб на CentOS с помощью kubeadm (kubespray тоже его использует кстати) и не помню чтобы выключал Selinux. Явным образом отключал только firewall, и то только потому-что не хотелось разбираться с исключениями в доступах

  3. В инструкциях не объясняли зачем нужно включать. Но в интернете в принципе отвечают на этот вопрос

Очень хорошая статья, спасибо! Я бы добавил в вашу инструкцию еще один пункт, сразу после соманды git checkou команду pip install -r requirements.txt из дирректории kubespray.

Да, это вроде как очевидно, но думаю, если непосвященные люди захотят повторить ваш гайд, они столкнутся с трудностями.

Sign up to leave a comment.