问题标签 [metallb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
344 浏览

kubernetes - 在 Kubernetes 上安装和配置 MetalLB

我在我的 Kubernetes 集群上安装并配置了 MetalLB。然后尝试创建 LoadBalancer Type 服务。(NodePort 类型的服务运行良好。)

但是,EXTERNAL-IP 处于待处理状态。

我在 MetalLB 控制器 pod 上遇到以下错误。有人可以帮助解决这个问题。

当我尝试安装 nginx 入口控制器时,我也遇到了类似的问题。

下面是我的环境。

从节点访问正在发挥作用。# curl -k https://10.96.0.1:443/api/v1/namespaces/metallb-system/configmaps?fieldSelector=metadata.name%3Dconfig&limit=500&resourceVersion=0

但是,无法从 POD 访问,如下所示。我想,这应该是工作。

0 投票
0 回答
33 浏览

kubernetes - 外部http访问kubernetes集群

我会很感激我的项目的一些帮助。

我在 2 个远程服务器上创建了一个 Kubernetes Master-Worker 集群,它们都具有公共 IP。

我希望能够在我的本地机器上添加一个指向主节点 IP 的 DNS 条目,并接收来自虚拟 nginx 应用程序的响应。

这是我到目前为止所拥有的:

命名空间:

Metallb configMap 使用 IP 10.244.0.101-10.244.0.110

托管 hello-world 应用程序的测试命名空间从 MetalLB 获取 IP 并公开端口 8080:

测试入口将 dashboard.com 指向与测试相关的服务。即使我尝试将 ServicePort 设置为 8080,端口也是 80:

nginx 入口控制器也有一个由 MetalLB 分配的 IP:

此时,如果我从 Master 或 Worker 卷曲,我会得到响应:

如果我将 10.244.0.102 dashboard.com 添加到主节点上的主机文件中,我会再次收到响应:

但是,如果我在本地计算机上键入dashboard.com:8080,并在/etc/hosts 中有一个将MASTER_IP 指向dashboard.com 的条目,我会超时。

我可以从主节点中的 netstat 看到没有服务正在侦听 80 或 8080,所以我错过了哪一步?

我的思维过程错了吗?我认为如果我在我的主 IP 上指向一个新域,则设置将根据入口规则上存在的域路由相关服务上的流量。

提前感谢您提供任何提示/阅读材料。

0 投票
0 回答
58 浏览

docker - 连接到 ClusterIP,要设置什么防火墙策略?

我有 3 个节点,1 个主节点和 2 个工作节点,该服务有 3 个 pod,每个都在一个节点上。

clusterIP 有时运行有时不运行,为什么?

kubeadm 版本:1.21

金属LB

印花布

如果我将副本设置为 1,则 pod 仅在主节点上运行,在这种情况下问题不存在。

我可以解决禁用防火墙的问题,那么添加什么策略?

会不会是这个滴?

解决问题是否只需要这些政策新规则?

可能这还不够,因为我还有 drop

0 投票
1 回答
587 浏览

kubernetes - Kubernetes(本地)Metalb LoadBalancer 和粘性会话

我在本地安装了一个 Kubernetes Master 和两个 Kubernetes Worker。

在我使用以下命令将 Metallb 安装为 LoadBalancer 之后:

我创建了我的 yaml 文件,如下所示:

myapp-tst-deploy.yaml

myapp-tst-service.yaml

myapp-tst-ingress.yaml

我运行kubectl -f apply所有三个文件,这是我的结果:

但是,当我尝试使用 LB 外部 IP (10.100.170.15) 连接时,系统会在 pod 上重定向浏览器请求(在同一浏览器上),如果我刷新或打开新选项卡(在同一 url 上),系统回复会重定向请求到另一个 pod。

我需要当浏览器中的用户数字 url 时,他必须在所有会话期间连接到特定的 pod,而不是切换到其他 pod。

如果可能,如何解决这个问题?在我的虚拟机中,我使用 stickysession 解决了这个问题,如何在 LB 或 Kubernetes 组件中启用它?

0 投票
1 回答
1504 浏览

kubernetes - 如何修复 k3s 上 nginx 入口的空外部 IP?

我想为我的 k3s 集群使用 metallb 和 nginx 入口。

目前外部IP是<none>

我希望它是192.168.178.240

我安装了k3s

然后我安装了metallb

与配置kubectl apply -f config.yaml

然后我安装了 nginx 入口裸机

所有 pod 都在运行

为什么入口控制器没有分配外部 IP?

0 投票
1 回答
333 浏览

kubernetes - 如何使用 MetalLB 和 Ingress Controller 传递裸机集群中的传入流量?

我正试图在裸机 k8s 集群上将内部负载平衡暴露给外部世界。

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

  1. 一些主节点和一些工作节点,有两个接口,一个面向公众 (eth0) 和一个本地 (eth1),ip 在 192.168.0.0/16 网络内

  2. 部署 MetalLB 并为其内部 ips 配置 192.168.200.200-192.168.200.254 范围

  3. 入口控制器及其服务类型为 LoadBalancer

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

但我有以下几个问题:

在每个节点上,我可以卷曲入口控制器 externalIP(只要它们在 eth1 上可访问)并附加主机头,并从在对应入口资源中配置的服务获得响应,还是仅在当前放置入口 pod 的节点上有效?

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

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

0 投票
2 回答
192 浏览

kubernetes - 如何将 DNS 配置到 Kubernetes 入口?

我已经购买了 3 个 VPS 并拥有类似的 IP 地址

我有一个入口控制器

我已经安装了 metallb,它可以对流量进行负载平衡并将其发送到任何 IP 地址。

现在如何为我的 kubernetes 集群端点提供静态 IP?

我应该购买虚拟 IP 并将其配置为 metallb 吗?如果有怎么办?

或者

我是否应该在上述所有节点中配置keepalived并配置虚拟IP。在这种情况下,我可以为所有节点配置相同的虚拟 IP 吗?不会有IP冲突吗?如果其中一个节点死亡,虚拟 IP 会自动分配给另一个活着的节点吗?如果是这样,自动将 IP 地址分配给另一个活动的节点的通常持续时间是多少?

0 投票
1 回答
107 浏览

kubernetes - Traefik 向除仪表板以外的任何地方显示 404 - Metallb

我尝试使用 traefik 设置入口,但没有运气。我不会只使用 TLS 端口 80。我有一个端口为 8080 的服务。如果我从集群内部 curl 到该服务,它工作得很好。我得到了 HTTP/200。但是,如果我要从外部连接到他的路径,它就不起作用。Traefik 仪表板在端口 8080 上运行良好

我使用以下设置

特雷菲克:1.7.7

我有一个在端口 8080 上运行的服务,我为它创建了一个入口规则。这是一个测试服务

我得到 404 与 curl 到 /helloservice 或尝试从浏览器打开

如果直接在集群内部 curl 到服务的 IP 地址,我会得到 200/OK

curl -v http://10.100.168.2:8080

猫 helloservice.yaml

0 投票
0 回答
83 浏览

kubernetes - 跨不同 Kubernetes 集群创建 Zookeeper 集群

我目前正在尝试安装一个 Zookeeper(版本 3.5.6)集群,它将跨两个不同的裸机 Kubernetes 集群运行。

Metallb 用于暴露 IP 和端口。

到目前为止,我只是想让 Zookeeper 集群在单个 Kubernetes 集群中工作,它的 IP 和端口都暴露在外部。

为了公开 IP,我为每个 Zookeeper 实例提供以下配置:

其中“xx.xx.xx.xx”是外部 IP。

我在两个节点上收到以下错误: 2021-06-03T14:15:16.595+0000 [myid:1] - WARN [QuorumPeer[myid=1](plain=/0:0:0:0:0:0:0:0:2181)(secure=disabled):QuorumCnxManager@679] - Cannot open channel to 2 at election address /xx.xx.xx.xx:31027 java.net.SocketTimeoutException: connect timed out.

但是,具有“server.1=0.0.0.0...”配置的一个节点确实启动了。

我的配置有什么问题吗?我怎样才能使这个设置工作?

0 投票
0 回答
218 浏览

kubernetes - 如何将 VPN IP 用于 Kubernetes LoadBalancer 服务?

我想使用LoadBalancer对象来获取集群中某些 pod 的流量。由于 pod 提供内部工具,我们不需要它们暴露在整个互联网上。

当前解决方案

目前,我运行一个单节点集群。在主机上,我使用一系列允许的 IP 运行 Wireguard。然后我将 MetalllLB 配置为使用这些 IP。这有以下好处:

  • 无需为负载均衡器和公共 IP 付费。
  • 增加了一层安全性,在访问LoadBalancer服务之前必须连接到 VPN。
  • yaml清单看起来与使用真实负载均衡器的正确部署相同。我可以使用期望的运算符,LoadBalancer而且我不仅限于服务 HTTP。
  • 每个服务都有自己的 IP,端口 80/443 可用。

如何在不配置底层主机的情况下获得相同的体验?

当使用 Kubernetes 作为服务时,我无法访问主机来配置 Wireguard。因此,我现在想在集群中运行 VPN,并使用 NodePort 公开它。通过这种设置,我将保留上述优势,并且仍然获得托管多节点集群。

如何在 GKE、AKS 或 Digital Ocean Kubernetes 上配置所需的网络?有限的主机访问甚至可能吗?如何创建此自定义LoadBalancer实现?