我创建了一个运行容器化Flask Web应用程序的Kubernetes集群(1x Master / 2x Workers)。我已经在主节点上创建了一个部署/服务,该部署/服务公开了一个NodePort来访问在:5000下在worker上运行的应用程序。

应用程序 Pane 处于 Activity 状态,NodePort服务可用。但是,由于集群在具有其自身IP的AWS EC2实例上运行,因此我无法通过NodePort IP地址访问集群应用。

我正在考虑通过本地浏览器通过:5000访问群集的Flask应用的最简单方法吗?

到目前为止的背景:

  • 我已经阅读了很多有关Kubernetes Ingress和AWS ELB / ALB NGINX Ingress的文章,以解决此问题,但是根据我的尝试,我无法设置此路由。情况似乎很复杂,我无法找到任何容易理解的资源来适用于我的情况。
  • 我认为一个更简单的解决方案可能是设置一个在我的主节点上运行的简单NGINX反向代理,以将通过[ec2_public_ip]:5000传入的流量转换为[nodeport-cluster-ip]:5000。但是,这似乎在60秒后挂起并超时。

  • 这是我的集群设置:
    NAME                               READY   STATUS    RESTARTS   AGE
    pod/anagram-app-55996478f5-mdnlg   1/1     Running   0          13m
    pod/anagram-app-55996478f5-qkn7p   1/1     Running   0          13m
    
    NAME                  TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
    service/anagram-app   NodePort    10.108.225.119   <none>        5000:30230/TCP   13m
    service/kubernetes    ClusterIP   10.96.0.1        <none>        443/TCP          14m
    
    NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/anagram-app   2/2     2            2           13m
    
    NAME                                     DESIRED   CURRENT   READY   AGE
    replicaset.apps/anagram-app-55996478f5   2         2         2       13m
    

    kubectl记录anagram-app-55996478f5-mdnlg(以显示Flask应用处于 Activity 状态):
     * Serving Flask app "app" (lazy loading)
     * Environment: production
       WARNING: Do not use the development server in a production environment.
       Use a production WSGI server instead.
     * Debug mode: on
     * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
     * Restarting with stat
     * Debugger is active!
     * Debugger PIN: 212-934-957
    

    我只是在寻找一种通过我的浏览器在端口:5000上访问集群应用程序的简单方法。如果有人在AWS EC2上对此感到满意,那么我很乐于助人:)

    提前致谢..

    最佳答案

    您应该能够通过EC2公共(public)IP到达应用程序NodePort。您只需要允许节点实例安全组中的NodePort端口。要允许所有NodePort,您需要允许端口范围从0.0.0.0/0到30000-32767。

    如果您只想打开端口5000,则需要像这样在部署规范中放入hostNetwork: true:

    spec:
      hostNetwork: true
    

    并且您还需要在安全组中允许端口5000

    关于flask - EC2/Kubernetes-如何通过EC2上的NodePort访问群集 flask 服务?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55889619/

    10-10 07:50