Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何使用MetalLB和入口控制器在裸机集群中传递传入流量?_Kubernetes_Kubernetes Ingress_Metallb - Fatal编程技术网

Kubernetes 如何使用MetalLB和入口控制器在裸机集群中传递传入流量?

Kubernetes 如何使用MetalLB和入口控制器在裸机集群中传递传入流量?,kubernetes,kubernetes-ingress,metallb,Kubernetes,Kubernetes Ingress,Metallb,我正试图在裸机k8s集群上向外界公开内部负载平衡 假设我们有一个基本的集群: 一些主节点和一些工作节点,具有两个接口,一个面向公共(eth0)和一个本地(eth1),ip位于192.168.0.0/16网络内 部署MetalLB并为其内部IP配置192.168.200.200-192.168.200.254范围 Ingress控制器及其带有LoadBalancer类型的服务 根据我目前的理解,MetalLB现在应该将192.168.200.200-192.168.200.254中的一个IP

我正试图在裸机k8s集群上向外界公开内部负载平衡

假设我们有一个基本的集群:

  • 一些主节点和一些工作节点,具有两个接口,一个面向公共(eth0)和一个本地(eth1),ip位于192.168.0.0/16网络内

  • 部署MetalLB并为其内部IP配置192.168.200.200-192.168.200.254范围

  • Ingress控制器及其带有LoadBalancer类型的服务

  • 根据我目前的理解,MetalLB现在应该将192.168.200.200-192.168.200.254中的一个IP分配给入口服务

    但我有以下几个问题:

    在每个节点上,我都可以使用附加的主机头对入口控制器externalIP进行卷曲(只要它们在eth1上可访问),并从在coresponding ingress resource中配置的服务获取响应,还是仅在当前放置入口吊舱的节点上有效

    将传入的外部流量传递到eth0到eth1网络上侦听的入口有哪些选项


    是否可以转发请求保存源ip地址或附加X-Forwarded-For标头是唯一的选项?

    假设我们正在使用
    Layer2
    讨论
    Metallb

    处理以下问题:

    在每个节点上,我都可以使用附加的主机头对入口控制器externalIP进行卷曲(只要它们在eth1上可访问),并从在coresponding ingress resource中配置的服务获取响应,还是仅在当前放置入口吊舱的节点上有效

    是否可以转发请求保存源ip地址或附加X-Forwarded-For头是唯一的选项

    在保留源IP的前提下划分解决方案,这个问题可能有两个方面:


    保留源IP地址 为此,您需要通过设置(在您的
    YAML
    清单中),将
    入口控制器的
    LoadBalancer
    类型服务设置为支持“本地流量策略”:

    • .spec.externalTrafficPolicy:Local
    只要在每个
    节点上都有
    入口控制器的副本,此设置就有效,因为进入控制器的所有网络都将包含在单个
    节点中

    引用官方文件:

    使用
    Local
    流量策略,接收流量的节点上的
    kube proxy
    仅将其发送到同一节点上的服务pod。节点之间没有“水平”流量

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

    此策略的缺点是,传入的流量只流向服务中的一些pod。不在当前leader节点上的POD不接收流量,它们只是作为副本存在,以防需要故障切换


    不保留源IP地址 如果您的用例不要求您保留源IP地址,您可以使用:

    • .spec.externalTrafficPolicy:Cluster
    此设置不要求每个
    节点上都有
    入口控制器的副本

    引用官方文件:

    使用默认的
    Cluster
    流量策略,接收流量的节点上的
    kube proxy
    执行负载平衡,并将流量分配到服务中的所有POD

    此策略可在服务中的所有POD上实现统一的流量分布。但是,
    kube proxy
    在进行负载平衡时会隐藏连接的源IP地址,因此pod日志将显示外部流量似乎来自服务的leader节点


    关于第二个问题:

    将传入的外部流量传递到eth0到eth1网络上侦听的入口的选项有哪些

    默认情况下,所有接口上的Metallb侦听,您需要做的只是在Metallb配置中从此
    eth
    指定地址池

    您可以通过以下方式找到有关此主题的更多参考资料:

    此类配置的一个示例如下:

    apiVersion:v1 种类:配置地图 元数据: 名称空间:metallb系统 名称:config 数据: 配置:| 地址池:#此处 -名称:我的ip空间 协议:第2层 地址: - 192.168.1.240/28
    假设我们使用的是
    Layer2

    处理以下问题:

    在每个节点上,我都可以使用附加的主机头对入口控制器externalIP进行卷曲(只要它们在eth1上可访问),并从在coresponding ingress resource中配置的服务获取响应,还是仅在当前放置入口吊舱的节点上有效

    是否可以转发请求保存源ip地址或附加X-Forwarded-For头是唯一的选项

    在保留源IP的前提下划分解决方案,这个问题可能有两个方面:


    保留源IP地址 为此,您需要通过设置(在您的
    YAML
    清单中),将
    入口控制器的
    LoadBalancer
    类型服务设置为支持“本地流量策略”:

    • .spec.externalTrafficPolicy:Local
    只要在每个
    节点上都有
    入口控制器的副本,此设置就有效,因为进入控制器的所有网络都将包含在单个
    节点中

    引用官方文件:

    使用
    Local