在数字海洋上运行 minikube 并尝试从外部访问

问题描述 投票:0回答:2

我在数字海洋上安装了 minikube,现在尝试从外部访问我的应用程序。但不知何故它不起作用。

我的服务yaml文件:

apiVersion: v1
kind: Service
metadata:
  name: python-data-service
spec:
  selector:
   app: python-web-selector
   tier: backend
  ports:
      - port: 5000
        targetPort: 80
        protocol: TCP
  externalIPs:
      - 64.225.117.89
  type: LoadBalancer

64.225.117.89是我的水滴ip。

developer@Kubernetes:~/yaml_Files$ minikube service python-data-service
|-----------|---------------------|-------------|-------------------------|
| NAMESPACE |        NAME         | TARGET PORT |           URL           |
|-----------|---------------------|-------------|-------------------------|
| default   | python-data-service |        5000 | http://172.17.0.3:30718 |
|-----------|---------------------|-------------|-------------------------|
🎉  Opening service default/python-data-service in default browser...

developer@Kubernetes:~/yaml_Files$ kubectl get services
NAME                  TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)          AGE
kubernetes            ClusterIP      10.96.0.1      <none>          443/TCP          57s
python-data-service   LoadBalancer   10.111.0.153   64.225.117.89   5000:30718/TCP   16s
sql-python-service    ClusterIP      None           <none>          3306/TCP         15s

developer@Kubernetes:~/yaml_Files$ curl http://172.17.0.3:31306
<html>
  <body>
    <form  method="POST" action="/postdata">
      <input type="text" name="student_name">
      <input type="text" name="student_id">
      <input type="text" name="student_email">
      <input type="text" name="student_phone">
      <input type="text" name="student_class">
      <input type="submit" value="Add">
    </form>
  </body>

developer@Kubernetes:~/yaml_Files$ curl http://localhost:5000
curl: (7) Failed to connect to localhost port 5000: Connection refused

我更改了数字海洋中的防火墙设置,但没有运气,有什么指示吗?

docker kubernetes digital-ocean kubectl minikube
2个回答
0
投票

有两种方式可以通过 NodePort 或 LoadBalancer 访问 minikube 中的应用程序。

LoadBalancer类型的服务可以通过minikube tunnel

命令公开。它作为一个进程运行,使用集群的 IP 地址作为网关,在主机上创建到集群的服务 CIDR 的网络路由。 tunnel 命令将外部 IP 直接公开给主机操作系统上运行的任何程序。该命令当前作为单独的守护进程运行,并创建到 minikube VM 的网络路由。 
它将分配外部IP给您的服务,然后可以从您的主机访问它。

如果您想使用

NodePort

 服务类型访问它,您必须获取 minikube ip 和节点端口,例如使用 
minikube service $SERVICE_NAME --url

要访问

localhost:node_port

,您必须从 minikube 内部访问它 (
minikube ssh
)。


0
投票
实际上,我尝试了你在这里建议的方法。但仍然无法访问minikube集群内运行的服务。

我正在类型为 LoadBalancer 的数字海洋 Droplet 上运行 minikube。 运行 minikube 隧道给出的外部 IP 与服务 IP 相同,但无法借助外部 IP 访问它。

你能告诉我为什么会发生这种情况吗?

© www.soinside.com 2019 - 2024. All rights reserved.