На предпосылке: не могу понять, как работает внешний ips
У нас есть предварительно настроенный кластер kubernetes с 1 мастером и 2 рабочими, а также с ситцевыми сетями. Проблема в том, что наше приложение не открывается из внешнего мира.
Я могу свернуть внешний IP из моего кластера K8S, но не могу открыть его из браузера.
Диапазон IP-адресов главных и рабочих узлов отличается от пула адресов конфигурации карты -
Главный / рабочий узел -> abcd
Metallb config.yaml ->
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- w.x.y.z
Я хочу знать, должен ли диапазон адресов в metallb config.yaml быть таким же, как кластерная сеть? Потому что когда я даю кластеру kubernetes диапазон IP-адресов, приложение открывается извне, в противном случае нет.
1 ответ
Чтобы использовать MetalLB, диапазон назначенных IP-адресов должен быть доступен из вашей кластерной сети. Например, если ваш кластерный IP-адрес 192.168.1.0 /24, вы можете назначить IP-адреса в диапазоне 192.168.1.1 - 192.168.1.254.
Так что если вы укажете в ConfigMap
...
addresses:
- 192.168.1.1-192.168.1.254
это будет работать.
Однако, если вы установите IP-адрес кластера, например, 192.168.1.0/28, вы сможете использовать адреса только из диапазона 192.168.1.1-192.168.1.14.
Пожалуйста, помните, что настройка сети и правильный ConfigMap - это еще не все. Вы должны создать сервис (loadbalancer), который представит ваш кластер миру.
Пожалуйста, проверьте это руководство MetalLB. Он содержит пример правильного набора MetalLB.
В режиме уровня 2 диапазон IP-адресов, который вы даете Metallb, должен находиться в пределах сетевого диапазона узла кластера. Вам нужен IP-пакет, исходящий от внешнего по отношению к кластеру, чтобы сначала достичь подсети кластера. Затем конечная точка (вероятно, маршрутизатор, соединяющий подсеть кластера с внешней сетью), получивший трафик, предназначенный для виртуального IP-адреса, назначенного Metallb, может выполнить запрос ARP, чтобы выяснить MAC-адрес интерфейса на узле, который в настоящее время владеет виртуальным IP. Вот как маршрутизируется внешний пакет.