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

docker - 无法在裸机 kubernetes 集群上获取外部 IP

我正在尝试建立一个裸机 Kubernetes 集群。我已经设置了基本集群,没问题,但我似乎无法让 MetalLB 正常工作以将外部 IP 公开给服务。

我的最终目标是能够部署一个具有 2 个以上副本的应用程序,并拥有一个我可以引用的 IP/端口,以便访问任何正在运行的实例。

到目前为止,我所做的(为了测试这一点)是:

metallb-layer-2.yml:

然后当我跑步时kubectl get svc,我得到:

无论我做什么,我都无法让服务拥有外部 IP。有人有想法吗?

编辑:在找到另一篇关于使用 NodePort 的帖子后,我做了以下事情:

这里找到。

现在,不幸的是,当我尝试 curl nginx 端点时,我得到:

我不确定这到底意味着什么。

编辑 2: 当我对运行 pod 的工作人员执行 TCP 转储时,我得到:

0 投票
1 回答
2292 浏览

kubernetes - 在 minkube 上带有 nginx 入口控制器的 Metallb 不断为入口重置外部 IP

一个 MCVE 示例在这里:https ://github.com/chrissound/k8s-metallb-nginx-ingress-minikube (只需运行./init.shminikube addons enable ingress)。

分配给入口的IP不断重置,我不知道是什么原因造成的?我可能需要额外的配置吗?

一分钟后:


在我刚刚申请的配置方面:


入口控制器日志日志:

metallb 控制器记录:


作为测试,我删除了与 metallb 相关的部署+守护程序集:

设置好外网IP后,又会重新设置...

0 投票
2 回答
689 浏览

docker - 前提:无法理解外部 ips 的工作原理

我们设置了本地 kubernetes 集群,其中包含 1 个 master 和 2 个 worker,以及带有 calico 网络的 metallb。问题是我们的应用程序没有从外部世界打开。

我可以从我的 K8S 集群中卷曲外部 IP,但无法从浏览器中打开它。

主节点和工作节点的 IP 范围与配置映射地址池不同 -

主/工作节点 --> abcd

Metallb config.yaml -->

我想知道metallb config.yaml中的地址范围是否需要和集群网络一样?因为我给kubernetes集群IP范围的时候,应用是从外面打开的,否则不行。

0 投票
1 回答
5789 浏览

rest - Kubernetes 集群 REST API 错误:500 内部服务器错误

我有一个使用 kubespray 部署的 k8s 集群。使用的负载均衡器是metalLB。我在这个集群中部署了一个 helm chart,它在地址 10.0.8.26:50028 上有一个 REST 服务

我正在向该服务发送请求:

http://10.0.8.26:50028/data/v3/authentication

http://10.0.8.26:50028/data/v3/actions

http://10.0.8.26:50028/data/v3/versions

但是每次我调用端点时,它都会按顺序返回响应:

503 运输正在关闭

500 内部服务器

500 内部服务器

204 - 正确响应

当我调用每个端点时返回相同的顺序。一旦返回正确的响应,之后就没有错误了。但是尝试一个新的 endoint 会返回错误。

有人可以帮帮我吗?

0 投票
2 回答
6071 浏览

kubernetes - MetalLB 外部 IP 到 Internet

我无法访问 MetalLB 负载均衡器分配的公共 IP

我在 Contabo 中创建了一个 Kubernetes 集群。它的1个主人和2个工人。每个人都有自己的公共 IP。

我用 kubeadm + flannel 做到了。后来我确实安装了 MetalLB 来使用负载平衡。

我使用这个清单来安装 nginx:

它有效,豆荚正在运行。我在之后看到了外部 IP 地址:

在此处输入图像描述 从每个节点/主机我可以curl到那个ip和端口,我可以得到nginx的:

到目前为止,一切都很好。但:

我仍然想念的是从我的计算机访问该服务(nginx)。我可以尝试通过 IP:PORT 访问每个节点(主节点 + 2 个从节点),但没有任何反应。最终目标是拥有一个可以访问该服务的域,但我猜不出我应该使用女巫 IP。

我错过了什么?

MetalLB 是否应该公开我的 3 个可能的 IP?我应该在每台服务器上添加其他东西作为反向代理吗?

我在这里问这个问题是因为所有关于裸机/VPS(非 aws、GKE 等)的文章/教程都在本地主机上的 kube 上执行此操作而错过了这个基本问题。

谢谢。

0 投票
1 回答
974 浏览

kubernetes - 无法让 metallb 在我的裸机集群上工作

我有一个裸机集群,其中有 3 台服务器是公开可用的,但每台服务器都有一个完全不同的 IP 地址。我的 DNS 条目指向所有 3 台主机 - 因此任何主机都可以接收流量。我所有的都通过一个vlan连接。现在我希望将来自互联网的流量转发到运行服务的 k8s 节点:

我知道我必须使用 metallb,因此我遵循了此处的设置说明:https ://kubernetes.github.io/ingress-nginx/deploy/baremetal/#a-pure-software-solution-metallb 。我可以成功部署 nginx 负载均衡器,但我不是如何配置 metallb 的用户。

在永远不会获得外部 IP 的服务中使用default结果nginx

使用internal有效,但仅当我连接到内部 vlan 时。

任何提示都会对我如何使我的场景起作用。

0 投票
1 回答
1248 浏览

kubernetes - MetalLB 与 Kubernetes,无法连接到 VIP 或端口

使用 MetalLB 负载均衡器时无法连接到 Kubernetes Deployment (App)。尝试配置浮动 IP,因此当一个节点发生故障并且工作负载转移时,我仍然知道在具有新地址的新节点上的 IP 是什么。

部署:

  1. 4x Raspberry Pi 4s 上的 Raspbian
  2. 在以太网端口上启用混杂模式
  3. 码头工人 + Kubernetes
  4. CNI - 编织(设置 NO_MASQ_LOCAL = 1)。[我也用 Flannel 设置了这个,结果相同]
  5. NGINX 泊坞窗图像
  6. 带有 Layer2 的 MetalLB(节点网络是 192.168.0.0/24,MetalLB 的 YAML 有一个为 VIP 192.168.0.240/28 分配的小子网)

已验证:

  1. 部署 (NGINX) 在 CNI IP (10.44.0.1:80) 上工作。使用 curl 从节点托管容器到容器 IP 进行验证。
  2. 部署 (NGINX) 使用节点 IP (192.168.0.102) 在 Nodeport 上工作。通过从笔记本电脑 curl 到节点进行验证。

部署 .yaml

metallb.yaml

apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: config data: config: | address-pools: - name: my-ip-space protocol: layer2 addresses: - 192.168.0.240/28

nginx.yaml apiVersion: apps/v1beta2 kind: Deployment metadata: name: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1 ports: - name: http containerPort: 80

nginx-服务-lb.yaml apiVersion: v1 kind: Service metadata: name: nginx labels: app: nginx spec: selector: app: nginx type: LoadBalancer ports: - port: 80 name: http protocol: TCP targetPort: 80

结果

我认为有效:

  1. 我认为从笔记本电脑向 VIP 发出的 ARP 请求正在工作,出现托管容器的节点的 MAC 地址。

不起作用:

  1. 部署分配一个 VIP 192.168.0.240 和端口 X 的负载均衡器,但是当我尝试从工作节点或我的笔记本电脑连接到它时失败。我的笔记本电脑 IP 在同一个网络中。该 VIP 所在的节点也无法执行 curl 请求。
  2. 我尝试将负载平衡子网设置为部署节点的 /32,以查看它是 IP 还是 ARP 问题。这样做时,我可以验证 MetalLB 分配的端口是否打开,但没有响应。这是在我的笔记本电脑上完成的。

笔记本电脑的结果

  1. 〜用户$ curl 192.168.0.102:31854
    • curl: (7) 连接 192.168.0.102 端口 31854 失败:连接被拒绝

来自笔记本电脑的 ARP 请求 .102 是节点,.240 是 MetalLB 分配的 VIP

  1. 〜用户$ arp 192.168.0.102
    • ? (192.168.0.102) 在 en0 ifscope [以太网] 上的 dc:a6:32:b:fc:d
  2. 〜用户$ arp 192.168.0.240
    • ? (192.168.0.240) 在 en0 ifscope [以太网] 上的 dc:a6:32:b:fc:d
0 投票
1 回答
163 浏览

kubernetes - 如何负载平衡在 2 个 Pod 上运行的有状态应用程序

我想对在 2 个 pod 上运行的 2 个有状态应用程序进行负载平衡。此应用程序不能有 2 个副本,因为它是有状态的。

我尝试为两个 pod 提供相同的服务名称,但看起来 Kubernetes 感到困惑并且没有提供任何服务。

我正在使用带有 metallb 作为负载均衡器的本地 Kubernetes 集群。

目前,这些 Pod 通过公共 IP 公开,服务 TYPE 作为负载均衡器,并在两个 Pod 中添加了 A 记录。但它不能对 DNS 进行健康检查。

我只想拥有 Nginx pod 并对它做 mod-proxy。除了这个还有什么更好的解决方案吗?

0 投票
0 回答
254 浏览

kubernetes - 使用 MetalLB 入口控制器监控 Kubernetes 集群的 HTTP 代码

在我们的私有云上​​的虚拟机上运行一个集群并使用 MetalLB 作为入口控制器,我们需要查看从我们的应用程序返回的网络流量和 HTTP 代码,以便在 Grafana 中查看 HTTP 请求和流量负载,就像您在 AWS 负载均衡器上看到的那样例子。

我们已经通过 Helm 部署在所有节点中部署了 Prometheus,因此我们可以从所有集群中收集指标,但没有找到任何包含所需信息的指标。尝试在 Prometheus 中查看有关入口、代理、http 的指标,但没有任何符合我们需求的指标。还尝试了存储库中的一些 Grafana 仪表板,但没有显示指标。

谢谢。

0 投票
2 回答
1156 浏览

kubernetes - Terraform 应用,如何增加计数并将 kubernetes 工作节点添加到现有工作人员?

我在 github 上的这个存储库之后使用 terraform 在裸机上部署了 k8s 集群

现在我有三个节点:

ewr1-控制器,ewr1-worker-0,ewr1-worker-1

接下来,我想运行 terraform apply 并增加工作节点(*ewr1-worker-3, ewr1-worker-4 ... *),同时保留现有的控制器和工作节点。我尝试将 count.index 递增到从 3 开始,但它仍然会覆盖现有的工作人员。

我没有尝试过,但如果我这样做

我假设这些工作节点不会由 kubernetes master 管理。我不想在开始时创建所有节点,因为我添加的工作节点将具有不同的规格(实例类型)。

我使用的整个脚本都可以在这个 github 存储库上找到。如果有人能说出我在这里缺少什么以及如何实现这一点,我将不胜感激。

谢谢!