Kubernetes Ingress Flask 应用程序

问题描述

我有一个简单的演示 Flask 应用程序,它使用 minikube 部署到 kubernetes。我可以使用服务访问该应用程序。但我无法使用 ingress 进行连接。

Services.yaml

apiVersion: v1
kind: Service
Metadata:
  name: services-app-service
spec:
  selector:
    app: services-app
  type: ClusterIP             
  ports:
    - protocol: TCP
      port: 5000              # External connection
      targetPort: 5000        # Internal connection

D:Path>kubectl get svc
NAME                   TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
db                     ClusterIP   None          <none>        3306/TCP   120m
kubernetes             ClusterIP   10.20.30.1    <none>        443/TCP    3h38m
services-app-service   ClusterIP   10.20.30.40   <none>        5000/TCP   18m

我可以使用 minikube 访问该应用。

D:Path>minikube service services-app-service --url
* service default/services-app-service has no node port
* Starting tunnel for service services-app-service.
|-----------|----------------------|-------------|------------------------|
| NAMESPACE |         NAME         | TARGET PORT |          URL           |
|-----------|----------------------|-------------|------------------------|
| default   | services-app-service |             | http://127.0.0.1:50759 |
|-----------|----------------------|-------------|------------------------|
http://127.0.0.1:50759
! Because you are using a Docker driver on windows,the terminal needs to be open to run it.

Ingress.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
Metadata:
  name: services-ingress
  annotations:
    Nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
    - host: mydemo.info
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: services-app-service
                port:
                  number: 5000

D:Path>kubectl get ing
NAME               CLASS    HOSTS         ADDRESS        PORTS   AGE
services-ingress   <none>   mydemo.info   192.168.40.1   80      15m

通过 ingress 访问应用是否需要任何额外的配置?

解决方法

问题是您需要使用 mydemo.info 的主机头访问它,才能使 Ingress 规范正常工作。你还需要确认你安装了一个 Ingress Controller,通常是新用户的 ingress-nginx,但有很多选项。然后,您将查找 Ingress Controllers NodePort 或 LoadBalancer 服务并通过它们进行访问。

,

ingressingress-dns 插件目前仅在 Linux 上受支持。目前不支持 windows。 MoreInfo

enter image description here

Windows 不支持

  • minikube 版本:v1.16.0
  • minikube 版本:v1.17.1

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...