我想使用外部公共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。
谢谢。
答案 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的冲突)