Невозможно заставить metalb работать на моем голометальном кластере
У меня голый металлический кластер с 3-мя серверами, которые общедоступны, но у каждого из них совершенно разные IP-адреса. У меня есть запись DNS, указывающая на все 3 хоста, поэтому трафик может быть получен любым хостом. У меня все они связаны через VLAN. Теперь я хотел бы, чтобы трафик, поступающий из Интернета, направлялся на узел k8s, где работает служба:
browse "mysrv.mydomain.com"
|
.-~|~-.
.- ~ ~-( | )_ _
/ v ~ -.
| | \
\ | .'
~- . _____|_______ . -~
|
| request can go to any service
|
+----------->--------------+------------>-------------+
v v v
| | |
| | |
+---------------------+ +---------------------+ +---------------------+
| host01 | | host02 | | host03 |
| k8s master | | k8s node | | k8s node |
| | | | | |
| Pub.Ip: x.x.x.x | | Pub.Ip: y.y.y.y | | Pub.Ip: z.z.z.z |
| | | | | |
| VlanIp: 192.168.0.1 |----| VlanIp: 192.168.0.2 |----| VlanIp: 192.168.0.3 |
+---------------------+ +---------------------+ +---------------------+
Я понимаю, что мне нужно использовать metallb, поэтому я следовал описанию установки здесь: https://kubernetes.github.io/ingress-nginx/deploy/baremetal/. Я могу успешно развернуть балансировщик нагрузки nginx, но я не пользователь, как настроить metallb.
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- x.x.x.x,y.y.y.y,z.z.z.z
- name: internal
protocol: layer2
addresses:
- 192.168.0.200-192.168.0.210
С помощью default
приводит к nginx
услуги, которые никогда не получают внешний IP
> kubectl get svc -n ingress-nginx ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx LoadBalancer 10.107.136.170 <pending> 80:30152/TCP,443:30276/TCP 43h
С помощью internal
работает, но только когда я подключен к внутренней VLAN.
Любой намек был бы полезен на то, как я могу заставить мой сценарий работать.
1 ответ
Ваша среда не подходит для MetalLB - вам понадобятся IP-адреса, которые можно назначить любому узлу (плавающий IP / IP-адрес службы). Для вашей ситуации лучшим решением будет обратный прокси-сервер, который называется Ingress in Kubernetes.