在哪里可以找到部署在 minikube 中的应用程序的主机 IP 地址

Where do I find the host IP address for an app deployed in minikube

我正在 minikube 中部署 spring 启动应用程序,它连接到主机上的数据库 运行。我在哪里可以找到应用程序可以用来返回主机的 IP 地址?对于 docker,我可以使用 ifconfig 并从 docker0 条目中获取 IP 地址。 ifconfig 显示另一台 IP 地址为 172.18.0.1 的设备。这就是我的应用返回主机的方式吗?

我想我理解正确,这就是您的要求。

Minikube 在您的机器上作为 VM 启动。您需要知道 Minikube 的起始 IP。这可以用 minikube statusminikube ip 完成,输出可能如下所示:

$ minikube status
minikube: Running
cluster: Running
kubectl: Correctly Configured: pointing to minikube-vm at 192.168.99.1

这只会为您提供 Minikube 的 IP 地址,而不是您的应用程序。 为了从 Minikube 外部连接到您的应用程序,您需要将其公开为 Service.

Service 的示例可能如下所示:

apiVersion: v1  
kind: Service  
metadata:  
  name: webapp  
spec:  
  type: NodePort  
  ports:  
    - nodePort: 31317  
      port: 8080  
      protocol: TCP  
      targetPort: 8080  
  selector:  
    app: webapp

可以看到结果:

$ kubectl get services -o wide  
NAME       TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)          AGE       SELECTOR  
postgres   ClusterIP   10.0.0.140   <none>        5432/TCP         32m       app=postgres  
webapp     NodePort    10.0.0.235   <none>        8080:31317/TCP   2s        app=webapp

您将能够使用 10.0.0.235:8080 从集群内部连接到 webapp,或者使用 Minikube IP 和端口 31317 从集群外部连接到 webapp。

我还建议阅读 Hello Minikube 教程。

这是 172.18.0.1 IP 地址。我使用这样的配置映射将其传递给 minikube 中的 Spring 应用程序 运行:

kubectl create configmap springdatasourceurl --from-literal=SPRING_DATASOURCE_URL=jdbc:postgresql://172.18.0.1:5432/bookservice

该应用还需要 SPRING_DATASOURCE_DRIVER_CLASS_NAME 在 configmap 中设置,并将凭据 SPRING_DATASOURCE_PASSWORDSPRING_DATASOURCE_USERNAME 设置为机密。

有关 configmap 和秘密的更多信息是 here