无法让 metallb 在我的裸机集群上工作
Unable to get metallb working on my bare-metal cluster
我有一个裸机集群,其中有 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/#a-pure-software-solution-metallb。我可以成功部署 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 时。
关于如何让我的场景正常工作的任何提示都会很有用。
您的环境不适合 MetalLB - 您需要可以分配给任何节点的 IP(浮动 IP / 服务 IP)。
对于您的情况,反向代理(在 Kubernetes 中称为 Ingress)将是更好的解决方案。
我有一个裸机集群,其中有 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/#a-pure-software-solution-metallb。我可以成功部署 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 时。
关于如何让我的场景正常工作的任何提示都会很有用。
您的环境不适合 MetalLB - 您需要可以分配给任何节点的 IP(浮动 IP / 服务 IP)。 对于您的情况,反向代理(在 Kubernetes 中称为 Ingress)将是更好的解决方案。