在Bare Metal / Prem Kubernetes中获得Pod的``外部IP''

时间:2020-01-28 07:56:21

标签: kubernetes metallb

我想使用外部公共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 个答案:

答案 0 :(得分:0)

您可以在metalLB的配置中配置其IP范围:请参见http://127.0.0.1:8000/login

但是请注意,无论您使用哪种外部LB实现方式,LoadBalancer类型服务始终必须具有与节点不同的IP。否则,节点上本地打开的端口将与服务端口冲突。

更新

在L2模式下使用metalLB时,地址池必须在节点所在的(V)LAN的CIDR范围内,否则ARP将无法工作。将您的metalLB配置更改为192.168.100.10-192.168.100.20(确保它不与网络上的任何现有计算机冲突,并且理想情况下重新配置dhcp,以便其用于新计算机的池不会与metalLB的冲突)