EC2 / Kubernetes-如何通过EC2上的NodePort访问群集烧瓶服务?

时间:2019-04-28 11:06:28

标签: flask amazon-ec2 kubernetes

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

应用程序窗格处于活动状态,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应用程序处于活动状态):

 * 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上对此感到满意,我很乐于助人:)

先谢谢了。

1 个答案:

答案 0 :(得分:0)

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

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

spec:
  hostNetwork: true

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