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

Minikube没有外部IP地址

饶滨海
2023-03-14

我正在将minikube作为docker映像运行。我试图使用Nodeport将我的服务公开给外部世界。

这是我的yaml文件。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: docker-hello-world
  labels:
    app: docker-hello-world
spec:
  selector:
    matchLabels:
      app: docker-hello-world
  replicas: 3
  template:
    metadata:
      labels:
        app: docker-hello-world
    spec:
      containers:
      - name: docker-hello-world
        image: scottsbaldwin/docker-hello-world:latest
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: docker-hello-world-svc
spec:
  selector:
    app: docker-hello-world
  ports:
    - port: 8088
      targetPort: 80
  type: NodePort

搜索了大量关于nodePort的信息,我们需要节点ip才能访问该服务。我可以使用minikube service docker hello world svc访问我的服务——url,它为我提供了访问服务的urlhttp://127.0.0.1:52526但此处的端口号与nodePort不同。

我的服务已成功运行 。

NAME                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
docker-hello-world-svc   NodePort    10.109.146.181   <none>        8088:30934/TCP   65m

我想使用Nodeport从html" target="_blank">集群外部访问我的服务,但我的节点没有任何外部ip

kubectl get nodes -o wide                                                                                                                                             
NAME       STATUS   ROLES           AGE    VERSION   INTERNAL-IP    EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION      CONTAINER-RUNTIME
minikube   Ready    control-plane   5h9m   v1.24.3   192.168.49.2   <none>        Ubuntu 20.04.4 LTS   5.10.104-linuxkit   docker://20.10.17

已经读出我需要入口控制器来访问服务,但我想使用nodePort对其进行测试。

任何解决方法,以便我可以使用仅在作为泊坞窗映像运行的迷你库贝内运行的nodePort访问我的服务?

迷你库贝的状态不显示库比特

>>minikube status                                                                                                                                                                             
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured

共有2个答案

宗意蕴
2023-03-14

您可以使用kubeclt进行端口转发。kubectl端口转发允许使用资源名称(如pod名称)选择要端口转发到的匹配pod。

kubectl port-forward svc/resource-name 4000:5000
岳允晨
2023-03-14

使用NodePort时不需要外部IP,您可以使用minikube IP获取minikubee节点地址,然后连接到相应的NodePort:

$ kubectl svc
NAME                     TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
docker-hello-world-svc   NodePort    10.108.66.235   <none>        8088:31550/TCP   2m15s

$ minikube ip
192.168.49.2

$ curl 192.168.49.2:31550
<h1>Hello webhook world from: docker-hello-world-cc79bf486-k4lm8</h1>

另一种选择是使用LoadBalancer服务,并使用minikube隧道使用内部端口连接到它:

$ kubectl  svc
NAME                     TYPE           CLUSTER-IP     EXTERNAL-IP    PORT(S)          AGE
docker-hello-world-svc   LoadBalancer   172.16.58.95   172.16.58.95   8088:32624/TCP   10s

$ curl 172.16.58.95:8088
<h1>Hello webhook world from: docker-hello-world-cc79bf486-dg5s9</h1>

注意事项:

  • 在单独的终端中运行minikube隧道后,您只会得到一个EXTERNAL-IP(这是一个前台进程)
  • 我建议您使用不太常见的服务IP范围运行Minikube,以防止与其他网络路由发生冲突:
minikube start --service-cluster-ip-range=172.16.0.0/16
 类似资料:
  • 问题内容: 我不太确定如何获取计算机的外部IP地址,就像网络外部的计算机会看到它一样。 我下面的IPAddress类仅获取计算机的本地IP地址。 问题答案: 我不确定是否可以从在本地计算机上运行的代码中获取该IP。 但是,你可以构建在网站上运行的代码(例如在JSP中运行),然后使用返回请求来源IP的内容: 或者只是使用已经存在的服务来执行此操作,然后解析该服务的答案以找出IP。 使用AWS等Web

  • 在compute节点上启动的VM实例可以访问除C类IP之外的所有外部internet站点。控制器和计算节点已经根据openstack liberty指南在Ubuntu上成功安装。 VM的接口有: [root@vm3~]#ifconfig eth1链路Encap:Ethernet HWaddr FA:16:3E:57:1B:57 inet Addr:192.168.0.215 BCAST:255.2

  • 我正在尝试将jboss绑定到一个外部ip地址,而不是默认的127.0.0.1,但是我得到了错误并且无法。 我要绑定到的IP地址是有效和可访问的,并且我已经使用ping进行了测试。我试过修改standalone.conf或修改standalone.xml,也试过-b xxx.xxx.236.237逼近,但每次都得到相同的错误。 请帮忙。多谢了。

  • 问题内容: 在同一个数据中心中,我有一个应用程序服务器(客户端),该服务器连接到包含3个节点的沙发基础集群。 我希望客户端通过内部IP而不是外部IP连接以优化性能。假设这些是我的IP: node1InternalIP / node1ExternalIP node2InternalIP / node2ExternalIP node3InternalIP / node3ExternalIP 当创建我的

  • 问题内容: 寻找一种使计算机具有当前外部IP的更好方法…可以正常工作,但宁愿不依赖外部站点来收集信息…我只能使用与Mac OS捆绑在一起的标准Python 2.5.1库X 10.5.x 问题答案: 如果您在获得外部IP的路由器后面,恐怕您别无选择,只能像您一样使用外部服务。如果路由器本身具有某些查询接口,则可以使用它,但是该解决方案将针对特定环境且不可靠。

  • 这是我的docker-compose.yml代码: 下面是我的traefik.toml代码: