我正在运行裸机Kubernetes集群并尝试使用Load Balancer来公开我的服务。我通常知道Load Balancer是底层公共云的一个功能,但是最近对Ingress控制器的支持似乎现在应该可以使用nginx作为自托管负载均衡器。
到目前为止,我一直在关注示例here来设置一个nginx Ingress Controller以及它背后的一些测试服务。但是,我无法按照步骤6显示运行负载均衡器的节点的外部IP,因为我的节点在地址部分没有ExternalIP,只有LegacyHostIP和InternalIP。
我已尝试通过在服务规范中指定ExternalIP来为我的群集手动分配。但是,这似乎被映射为externalID。
如何手动设置节点的ExternalIP地址?
答案 0 :(得分:4)
这是经过测试的,适用于在特定节点上创建的nginx服务。
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
name: http
- port: 443
protocol: TCP
targetPort: 443
name: https
externalIPs:
- '{{external_ip}}'
selector:
app: nginx
假设nginx部署上游侦听端口80,443。 externalIP是节点的公共IP。
答案 1 :(得分:2)
我建议您查看MetalLB:https://github.com/google/metallb
它允许使用ARP或BGP在裸机群集中提供外部IP地址。它对我们非常有用,并且允许您像在云中一样简单地请求LoadBalancer服务。