Kubernetes(Minikube)外部IP不起作用

ss2ws0br  于 2022-10-06  发布在  Kubernetes
关注(0)|答案(5)|浏览(507)

我是Kubernetes的新手,我一直在浏览、查找和阅读我的外部IP无法解析的原因。

我在ubuntu 16.04发行版上运行mini kube。

在 Jmeter 板的服务概述中,我有以下内容

my-nginx | run: my-nginx | 10.0.0.11 | my-nginx:80 TCP my-nginx:32431 | TCP 192.168.42.71:80

当我在http://192.168.42.165:32431/执行http get时,我会得到nginx页面。

服务的配置如下


# Please edit the object below. Lines beginning with a '#' will be ignored,

    # and an empty file will abort the edit. If an error occurs         while saving this file will be
    # reopened with the relevant failures.
    #
    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: 2016-09-23T12:11:13Z
      labels:
        run: my-nginx
      name: my-nginx
      namespace: default
      resourceVersion: "4220"
      selfLink: /api/v1/namespaces/default/services/my-nginx
      uid: d24b617b-8186-11e6-a25b-9ed0bca2797a
    spec:
      clusterIP: 10.0.0.11
      deprecatedPublicIPs:
      - 192.168.42.71
      externalIPs:
      - 192.168.42.71
      ports:
      - nodePort: 32431
        port: 80
        protocol: TCP
        targetPort: 80
      selector:
        run: my-nginx
      sessionAffinity: None
      type: LoadBalancer
    status:
      loadBalancer: {}

这些是我的iFconze的一部分

virbr0    Link encap:Ethernet  HWaddr fe:54:00:37:8f:41  
              inet addr:192.168.122.1  Bcast:192.168.122.255          Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:4895 errors:0 dropped:0 overruns:0 frame:0
              TX packets:8804 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:303527 (303.5 KB)  TX bytes:12601315 (12.6         MB)

    virbr1    Link encap:Ethernet  HWaddr fe:54:00:9a:39:74  
              inet addr:192.168.42.1  Bcast:192.168.42.255          Mask:255.255.255.0
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:7462 errors:0 dropped:0 overruns:0 frame:0
              TX packets:12176 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3357881 (3.3 MB)  TX bytes:88555007 (88.5 MB)

    vnet0     Link encap:Ethernet  HWaddr fe:54:00:37:8f:41  
              inet6 addr: fe80::fc54:ff:fe37:8f41/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:4895 errors:0 dropped:0 overruns:0 frame:0
              TX packets:21173 errors:0 dropped:0 overruns:0 carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:372057 (372.0 KB)  TX bytes:13248977 (13.2 MB)

    vnet1     Link encap:Ethernet  HWaddr fe:54:00:9a:39:74  
              inet addr:192.168.23.1  Bcast:0.0.0.0          Mask:255.255.255.255
              inet6 addr: fe80::fc54:ff:fe9a:3974/64 Scope:Link
              UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
              RX packets:7462 errors:0 dropped:0 overruns:0 frame:0
              TX packets:81072 errors:0 dropped:0 overruns:0         carrier:0
              collisions:0 txqueuelen:1000 
              RX bytes:3462349 (3.4 MB)  TX bytes:92936270 (92.9 MB)

因为我迷路了,有谁有什么建议吗?

qrjkbowd

qrjkbowd1#

Tl;dr mini kube有“插件”,你可以用它来处理入口和负载平衡。只需启用并配置其中一个即可。

https://medium.com/faun/metallb-configuration-in-minikube-to-enable-kubernetes-service-of-type-loadbalancer-9559739787df

uajslkp6

uajslkp62#

Minikube外部IP:
mini kube不支持为NodePortLoadBalancer服务直接访问外部IP。

我们没有获得外部IP来访问本地系统上的服务。所以最好的选择是使用mini kube IP

一旦您的服务公开,使用以下命令获取minikube IP。

minikube service service-name --url

现在使用该URL来服务于您的目的。

iszxjhcz

iszxjhcz3#

Minikube不支持LoadBalancer服务,因此该服务永远不会获得外部IP。

但你无论如何都可以通过它的外部端口访问这项服务。

您可以通过运行以下命令获取IP和端口:

minikube service <service_name>
rqenqsqc

rqenqsqc4#

我假设你正在使用VirtualBox中的mini kube(没有关于如何启动它以及你的主机操作系统是什么的信息)。

当您创建一个类型为LoadBalancer的服务时,您还应该运行minikube tunnel以从集群公开LoadBalancer。然后,当您运行kubectl get svc时,您将获得LoadBalancer的外部IP。尽管如此,它仍然是mini kube的IP,所以如果你想从你的机器外部暴露它,你应该在你的机器上放置一些反向代理或隧道。

6za6bjd0

6za6bjd05#

如果您在Windows上运行Minikube,只需运行:

minikube tunnel

注意:它必须在单独的终端窗口中运行,以保持隧道打开。

上面的命令会通过隧道将您的容器发送到本地主机。然后,您可以通过以下方式获取服务URL:

kubectl get services [service name]

将**[服务名称]**替换为您的服务名称。不要忘记在外部IP端点上添加Map端口。

相关问题