Получите `` Внешний IP '' для подов в Bare Metal /On Prem Kubernetes
Я хочу предоставить модули с внешними общедоступными IP-адресами (без использования опции NodePort). Пожалуйста, дайте мне знать, как достичь этого (подробно) в Bare Metal Kubernetes (без использования облачного провайдера). Я пробовал MetalLB, но безуспешно, поскольку диапазоны IP-адресов отличаются от моих узлов.
Моя конфигурация выглядит следующим образом
apiVersion: v1
kind: ConfigMap
metadata:
namespace: metallb-system
name: config
data:
config: |
address-pools:
- name: default
protocol: layer2
addresses:
- 192.249.6.75-192.249.6.79
kubectl get pods -o wide --all-namespaces
<output omitted>
metallb-system controller-65895b47d4-cbnpd 1/1 Running 1 26d 192.168.182.12 worker3 <none> <none>
metallb-system speaker-6zfw8 1/1 Running 1 26d 192.168.56.102 worker1 <none> <none>
metallb-system speaker-76hvg 1/1 Running 1 26d 192.168.56.103 worker2 <none> <none>
metallb-system speaker-qkpwb 1/1 Running 2 26d 192.168.56.101 master <none> <none>
metallb-system speaker-qqhng 1/1 Running 1 26d 192.168.56.104 worker3 <none> <none>
CIDR подсети узла - 192.168.0.0/16.
Спасибо.
1 ответ
Вы можете настроить диапазоны IP для metalLB в его конфигурации: см. раздел конфигурации
однако обратите внимание, что службы типа LoadBalancer всегда должны иметь IP-адреса, отличные от узлов, независимо от того, какую реализацию внешнего LB вы используете. в противном случае локально открытые порты на узлах будут конфликтовать с портом служб.
Обновить
при использовании metalLB в режиме L2 пул адресов должен находиться в пределах CIDR той (V)LAN, где расположены узлы, иначе ARP не будет работать. измените свою конфигурацию metalLB, например, на192.168.100.10-192.168.100.20
(убедитесь, что он не конфликтует с существующими машинами в вашей сети, и в идеале перенастройте dhcp, чтобы его пул для новых машин не конфликтовал с пулом metalLB)