当前位置: 首页 > 知识库问答 >
问题:

无法从 K8s 节点(金属LB 第 2 层)访问的服务

盖向荣
2023-03-14

我在威睿vSphere私有云上裸机部署了库伯内特斯集群

规格:

  • 操作系统:Ubuntu 20.04.3云映像(也尝试18.04和21.04)
  • 库伯内特斯:1.23.1(也尝试1.21.8)-使用kubeadm和库贝-agent(具有严格的ARP和ipvs模式)
  • CRI:Docker 20.10.12
  • MetalLB v0.11.0(第2层模式)
  • 纤毛1.11.1
  • 子网192.168.50.0/24所有节点

当我简单地添加部署时:<br><code>kubectl创建部署nginx--image k8s.gcr.io/nginx:latest</code>

并公开了它:< br > < code > kubectl expose deployment nginx-type = load balancer-port = 80

一切似乎都很好。服务从MetalLB池获取ExternalIP:
nginx LoadBalancer 10.96.56.118 198.168.50.152 80:32325/TCP 4s

库贝-ipvs0接口上发布的新ip地址:

kube-ipvs0:

但是我无法通过ExternalIP从所有K8s节点以及其他LAN访问服务,curl返回:< br> curl: (7)无法连接到192.168.50.152端口80:没有到主机的路由

ClusterIP工作良好,我可以从节点访问它。

共有1个答案

贺俊材
2023-03-14

解决方案是:您的虚拟机和服务必须位于不同的子网中。就我而言,我有192.168.50.0/24网络,我将其拆分为两个子网192.168.50.0/25-用于虚拟机,192.168.50.128/25用于MetalLB服务。

 类似资料:
  • 工作节点1上的Curl对群集IP来说是最合适的(这是运行pod的节点) Curl在其他工作节点上也失败:

  • 我正在尝试在minikube(Windows-10)上部署简单的spring boot REST服务。下面是我的配置 Docker文件 docker image运行良好,我能够运行该应用程序。 部署 服务 我无法使用< code > service-IP:node port/Uri < br > http://127 . 0 . 0 . 1:30008/hello访问restendpoint ht

  • 我无法从外部访问我的服务。首先,这里是我的conf yaml文件: nginx-pod.yaml nginx-service.yaml metallb-config.yaml 然后我创建了集群。命令 打印: 一切正常,而且< code > ku bectl describe service/nginx-service 打印: curl命令在主服务器打印。接下来我试图从另一个网络打开,它不起作用,但

  • 我对Kubernetes和Istio有点陌生。我正在尝试创建一个服务并通过HTTPS访问它。 通过HTTP看起来一切都很好 我使用了cert-manager和let's Encrypt来生成证书 证书已成功生成 我使用以下命令生成了机密 这些是我的网关、虚拟服务、集群颁发者和证书的配置文件。 网关 证书 当我运行时,我可以看到tls.crt和tls.key内容。 有什么想法为什么我不能达到我可以通

  • 问题内容: 我正在使用Jenkins Build Flow插件来实现并行化。Groovy DSL执行某些文件操作。即使该选项设置为在特定从属服务器上运行作业,但DSL仍在主服务器上运行。这不是故意的。 有人可以告诉我如何限制DSL在指定的从站上运行吗?即使有一种方法可以通过DSL访问从文件系统,也应该可以。 通常,我们如何使用Groovy从Jenkins主节点访问节点从节点上的文件? 工作空间位于

  • 我正在尝试使用入口公开部署,其中DeamonSet具有hostNetwork=true,这将允许我跳过额外的负载平衡器层,并直接在Kubernetes外部节点IP上公开我的服务。很遗憾,我无法从外部网络访问入口控制器。 我在GCP上运行库伯内特斯版本1.11.16-gke.2。 我将刷新群集设置为: 我运行部署: 然后我创建服务: 和入口资源: 我获取节点外部IP: 检查入口是否正在运行: 然后尝