Я хотел бы расширить свой внутренний on-premises stacked HA Kubernetes с 3 контрольными плоскостями, 3 рабочими узлами кластера в 3 офисах. Таким образом, каждая контрольная плоскость и 1 рабочий будут в каждом из офисов. Каждая контрольная плоскость будет иметь свой собственный статический IP.
Мне сложно понять, как балансировщик нагрузки (я использую metallb) может выполнять свою работу, если, скажем, в офисе 1 отключилось электричество. Как трафик перенаправляется в офисы 2 и 3?
Например, внешние, публичные пользователи, получающие доступ к nextcloud, работающему на узле office-1, могут использовать полное доменное имя cloud.company.com, связанное со статическим IP-адресом office-1-node. (Хотя nextcloud может работать на рабочем или главном узле в узле office-2-node или office-3-node... но что касается пользователей, то это не проблема.)
Если в office-1-node отключится электроэнергия, что перенаправит cloud.company.com на статический IP-адрес office-2-node или office-3-node?
Я все еще учусь, поэтому, пожалуйста, имейте это в виду, когда будете отвечать.
решение1
Я мог видеть, что Metal LB развернут(https://metallb.universe.tf/installation/) как контроллер (который обрабатывает назначение IP) и daemonset (компонент - динамик -> Я думаю, что это обработка внешних объявлений в соответствии сhttps://metallb.universe.tf/concepts/). Таким образом, этот LB по сути развернут как ресурс Kubernetes.
Возвращаясь к вашему вопросу, если в работе узла office-1 произойдет сбой, модули в daemonset с других узлов будут функционировать так, как требуется (делать внешние объявления и обеспечивать доступность служб), а контроллер с других главных узлов продолжит обрабатывать назначения IP-адресов.
Ресурсы:
- Контроллер Kuberneteshttps://kubernetes.io/docs/concepts/architecture/controller/
- Kubernetes Daemonsethttps://kubernetes.io/docs/concepts/workloads/controllers/daemonset/
- Манифест Kubernetes Metallb -https://github.com/metallb/metallb/blob/main/manifests/metallb.yaml
Редактировать: Отвечая на вопрос во втором комментарии. Сначала вам нужно будет купить доменное имя (от godaddy, bigrock, AWS Route53 и т. д.). Затем создайте CNAME, чтобы указать это доменное имя на IP вашего балансировщика нагрузки (с портом по желанию) (в вашем случае IP-адреса office-1,2,3 могут использоваться в циклическом режиме для обеспечения бесперебойной работы). Этот циклический режим называетсяБалансировка нагрузки DNS. Или вы можете реализоватьотказоустойчивость DNSкак в AWS Route53, реализуя проверки работоспособности в вашем балансировщике нагрузки. После этого внешний пользователь продолжит иметь доступ к сервисам в kubernetes (из office-2 и 3)