问题标签 [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 投票
0 回答
80 浏览

nginx - 我无法使用 Nginx 从外部 Kubernetes 集群访问

我有一个内部部署有 kubernetes (k8s) v.1.16 的集群。我已经安装了 MetalLB (v.0.9.3) 和 Nginx (v.1.9.1)。MetalLB 正确设置了 ingress-nginx 外部 IP。然后我部署了以下茶和咖啡服务示例:

https://github.com/nginxinc/kubernetes-ingress/tree/master/examples/complete-example

当我从集群内部执行 --curl 测试应用程序时:

它有效,我得到以下响应:

问题是我无法从集群外部访问。我尝试使用https://cafe.example.como/coffeehttps://xxx.xxx.xxx.xx/coffee从 Google Chrome 浏览器得到以下响应:

有什么建议为什么我无法从集群外部访问?

非常感谢。

问候。

0 投票
2 回答
200 浏览

nginx - Kubernetes Baremetal 集群中的 MetalLB

我是 Kubernetes 新手,正试图通过入口资源公开我的服务(Nginx)。入口控制器已经通过 helm nginx-stable/nginx-ingress 安装。尝试从入口资源访问所述 IP 和端口时。这是无法访问的,通过进行一些研究,我发现我需要安装 metalLB。

我的问题是我真的需要安装 MetalLB 还是有任何替代的内置资源可以配置或用于路由流量?

0 投票
0 回答
1057 浏览

networking - 如何正确启用和连接用于 Kubespray 的 MetalLB 插件?

我正在尝试使用 Kubespray 让我的集群运行起来,我不得不说它是一个很棒的工具,但我无法让它完全正确地为我工作。具体来说,我正在尝试启用 metalLB 插件,但它似乎不起作用。

在我自己的尝试失败后,我从 kubespray 拉取请求中退回到测试步骤,该请求将 metalLB 添加为插件,但这仍然失败。

拉取请求 kubespray/pull/6238 链接

指出我的实际步骤。

  1. vagrant destroy(处理我的最后一次尝试)
  2. 更改/inventory/mycluster/group_vars/k8s-cluster/addons.yml以启用 MetalLB,版本 0.9.3,第 2 层,ip 范围192.168.1.201-192.168.1.250
  3. 变更/inventory/mycluster/group_vars/k8s-cluster/k8s-cluster.ymlkube_network_plugin: flannelkube_proxy_strict_arp: truekubeconfig_localhost: true
  4. ansible-playbook -i inventory/mycluster/hosts.yaml --become --become-user=root cluster.yml --private-key=~/.ssh/id_rsa
  5. vagrant up
  6. kubectl apply -f testlb.yaml (apply the test service from the pull request test)

my-service 的 external-ip 仍然挂起,因为它无法解析。似乎没有 metallb 组件正在运行。在执行过程中,很多文字飞速掠过,但我没有看到任何 metallb 特定的消息。

我的计划是使用集群来玩、学习和开发,最好是使用 jenkins-x。它不打算用作生产集群或供公众访问。

我的网络很简单,宽带集线器/路由器/防火墙位于 192.168.0.1。该路由器在 192.168.0.* 范围内分配网络地址

我的 Kubespray 集群在四核 ubuntu 机器上的 virtualbox 中运行 3 个节点。

为什么外部 IP 仍处于待处理状态,我该如何解决?

0 投票
1 回答
313 浏览

kubectl - Ingress DNS 在容器外不起作用

我在 VMware 的 k8s 集群中部署了一个入口。问题是 DNS 在容器内响应:

但是,如果我从集群中尝试:

即使我使用 DNS 而不是 localhost 或 metallb 分配给入口控制器的 IP,它也不起作用。

如果我 curl 由 metallb 分配的外部 ip: 10.133.2.21

所以,这意味着 nginx 以某种方式工作,但如果我尝试 curl 10.133.2.21/banana 或 10.133.2.21/apple 它不起作用。

有任何想法吗?

0 投票
1 回答
1727 浏览

kubernetes - Microk8s + metallb + ingress

我对 kubernetes 很陌生,我试图在带有 CentOS 的 VPS 上建立一个 microk8s 测试环境。

我做了什么:

我设置了集群,启用了入口和 metallb

暴露了入口控制器服务:

暴露一个 nginx 部署来测试入口

这是我的集群的状态:

看起来 Metallb 可以正常工作,因为入口服务从我指定的池中收到了一个 ip。现在,当我尝试部署入口以到达 nginx 部署时,我没有得到地址:

非常感谢您的帮助。谢谢!

0 投票
1 回答
1458 浏览

nginx - Nginx 报“上游连接超时”

说明: k8s nginx-ingress-controllers 暴露在负载均衡器类型(由metallb 实现)中,ip addr 为192.168.1.254。另一个 nginx 集群在 k8s 集群前面,它只有一个上游,即 192.168.1.254(lb ip addr)。请求流路由:client -> nginx clusters -> nginx-ingress-controllers-> services。

问题:有时 nginx 集群报告非常小的“上游(192.168.1.254)超时”,最后客户端从 nginx 得到 504 超时。

但是当我放弃 nginx 集群并将请求流切换到:客户端-> nginx-ingress-controllers-> 服务时。一切顺利,客户端不再出现 504 超时。我确定 nginx 集群和 nginx 入口之间的网络控制器运行良好。

大多数请求可以由 nginx 集群处理并返回状态 200。我不知道为什么很少有请求报告“上游超时”并返回状态 504。

系统架构

nginx集群报告超时

tcpdump 包跟踪

0 投票
0 回答
108 浏览

kubernetes - 为什么 Kubernetes pod CPU 使用率在节点(DaemonSets)之间会有很大差异?

前言:我是一个 Kubernetes 新手,在家里自建集群,我有 1 个 master 和 3 个 worker 节点。

我正在努力确定为什么我的一些由 DaemonSets 管理的 pod 使用的 CPU 比其他节点上的对应物更多。

以下是结果的摘录kubectl top pod --all-namespaces

NAMESPACE NAME CPU(cores) 节点
kube-system coredns-p7xkg 20m Master
kube-system coredns-ztwnn 66m Worker 1 kube-system coredns-2n44b 68m Worker 2
kube-system coredns-smhnb 15m Worker 3
kube-system kube-flannel-ds -j4f6l 9m Master
kube-system kube-flannel-ds-fwwqg 67m Worker 1
kube-system kube-flannel-ds-sm7g6 44m Worker 2
kube-system kube-flannel-ds-qk9vq 11m Worker 3
metallb-system speaker-lfp8n 22m Master
metallb-system speaker-6plw9 100m Worker 1
metallb-system speaker-gt4fm 99m Worker 2
metallb-system speaker-bntfk 27m Worker 3

正如您在上面看到的,在 3 个不同的 DaemonSet 中,worker 1 和 2 存在问题。

主特性:controller manager、api server、dashboard 和 metrics scraper、metallb controller,除上述 DaemonSet pods Worker #1 特性:上述 + kube proxy Worker #2 特性:mariadb、metrics server、elastic quickstart es/kb/ operator Worker #3 功能:phpmyadmin、gitea、splunk、nexus

我怀疑可能存在一些网络问题,导致工作节点 #1 和 #2 上的 CPU 使用率很高,但 pod 日志中没有任何内容向我跳出。

CoreDNS v1.7.0 Flannel v0.13.1-rc1 MetalLB v0.9.5

有没有人对要检查什么以查明真相有任何建议?

提前致谢!

0 投票
1 回答
4944 浏览

kubernetes - 使用 MetalLB 将公共 IP 添加到 Nginx 入口控制器

我的集群中有三个节点位于我无法控制的防火墙后面。这个防火墙有一个与之连接的公共 IP,可以将流量转发到我的 kubernetes 节点。它向我的节点开放了端口 80 和 443。

最初,我在 MetalLB 配置中使用了公共 IP,如下所示:

但是在阅读了另一个问题的答案后,我猜它是无效的,因为 MetalLB 使用的 IP 需要与节点位于同一子网上?他们都在使用私有IP。

当我在本地测试一个监听端口 80 的 HTTP 服务器并在实际节点(不在集群中)上运行它时,我能够从网络外部获得公共 IP 的响应。

所以我的问题是: 如何让 MetalLB 或 Nginx 入口控制器在端口 80 和 443 上监听传入请求?

当使用curl 186.xx.xx.xx:80集群中的一个节点时,我会收到来自 nginx 入口控制器的响应。但不是在节点之外执行此操作时。

0 投票
1 回答
407 浏览

kubernetes - 如何使用 MetalLB 配置 k8s 反向代理服务

我需要从端口 80 访问 jupyter-lab 并将 k8s 配置重定向到 8888。这是我设置自己学习 k8s 网络的问题,并且还要让 jupyter-lab 运行。

这是 MetalLB 配置图。本地 DNS 将“jupyter-lab.k8s.home”解析为这些 IP 地址

这是我的 LoadBalancer 指向入口控制器,这不是暴露端口 80 并重定向到目标 8888 吗?

这是我的入口控制器,它是否正确配置了指向 CIP 的入口对象?

这是针对我的 jupyer-lab 部署的 CIP

这是我在端口 8888 上运行 jupyter-lab 的部署

我确实看到了 jupyter-lab.k8s.home:8888,但我无法使用获得的令牌登录 kubectl logs -n default jupyter-lab-dpt-dfbd554b7-bf7fk

如何设置配置以便我可以浏览到http://jupyter-lab.k8s.home?noportnumber

0 投票
0 回答
545 浏览

kubernetes - 使 istio-ingress 与 metallb 裸机 kubernetes 集群一起工作

2021 年 14 月 3 日更新

Metallb LoadBalancer IP192.168.0.21 只能从集群(主/节点)访问。

问题

试图让 istio 在 Vmware ESXI 上使用 metallb。

安装 MetalLb 与 helm install metallb bitnami/metallb -n metallb-system -f metallb-config.yaml

使用https://istio.io/latest/docs/setup/install/helm/安装 istio。

同时,metallb 控制器日志说它分配了 IP。

我正在尝试使用https://istio.io/latest/docs/tasks/traffic-management/ingress/ingress-control/安装一个简单的示例 HTTPBIN

但是IP192.168.0.21永远不会解析。来自同一网络中的其他机器。

curl -s -I -HHost:httpbin.example.com "http://192.168.0.21:80/status/200"

我尝试使用 Nginx-ingress 安装

效果很好,任何人都可以指导 istio 如何与裸机 metallb 一起工作。