K8s metallb负载均衡器IP有时不可达



我有一个本地k8s集群,有3个主集群和4个工人集群。安装了Metallb,并从与本地集群ip相同的网络为其提供DHCP。

我尝试在集群中启动Kubernetes Dashboard应用程序,除了Kubernetes Dashboard的LoadBalancer服务类型:

apiVersion: v1
metadata:
annotations:
metallb.universe.tf/address-pool: single-ip
labels:
k8s-app: kubernetes-dashboard
name: kubernetes-dashboard
namespace: kubernetes-dashboard
spec:
type: LoadBalancer
ports:
- port: 443
targetPort: 8443
selector:
k8s-app: kubernetes-dashboard
externalIPs:
- 192.168.1.129
root@master1:/# kubectl get services -n kubernetes-dashboard
NAME                        TYPE           CLUSTER-IP      EXTERNAL-IP       PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP      10.249.40.230   <none>            8000/TCP        6h8m
kubernetes-dashboard        LoadBalancer   10.249.3.22     192.168.1.129   443:32593/TCP   6h8m

应用所有配置后,仪表板开始从集群和我的计算机正确地在https://192.168.1.129上工作。

但在一段时间后停止从我的计算机工作,但继续从集群工作。从我的电脑,我得到"连接拒绝错误"。

从我的计算机和集群192.168.1.129的IP ping正常,没有任何问题。

externalTrafficPolicy默认为Cluster。将其更改为Local没有帮助。

发生了什么?如何解决服务工作,然后停止工作,然后再次开始工作的问题?:)

我让它再次工作的一种方法是改变MetalLB配置中的一个值来重新加载它。

编辑:

externalTrafficPolicyLocal改为Cluster后,对我来说似乎是稳定的。

根据文档:https://metallb.universe.tf/usage/

Layer2当宣布为Layer2模式时,集群中的一个节点将为业务IP吸引流量。从那里,行为取决于

" Cluster "流量策略使用默认的Cluster流量策略,接收流量的节点上的Kube-proxy进行负载均衡,并将流量分配给您服务中的所有pod。

此策略导致所有pod之间的流量均匀分布该服务。但是,kube-proxy将模糊的源IP地址连接时进行负载平衡,因此您的pod日志将显示外部流量似乎来自该服务的领导者节点。

" Local "流量策略启用本地流量策略后,kube-proxy开启接收流量的节点只将其发送到服务位于同一节点上的Pod。没有"横向"交通节点间的流

因为kube-proxy不需要在集群节点之间发送流量,您的pods可以看到传入连接的真实源IP地址。

此策略的缺点是传入的流量只流向某些服务中的pod。不在当前领导节点上的pod不接收任何流量,它们只是作为副本存在,以防发生故障转移是必要的。

相关内容

  • 没有找到相关文章

最新更新