我创建了一个运行容器化Flask Web应用程序的Kubernetes集群(1x Master / 2x Workers)。我在主节点上创建了一个部署/服务,它公开了一个NodePort来访问在5000下的worker上运行的应用程序。
应用程序窗格处于活动状态,NodePort服务可用。由于群集在具有自己的IP的AWS EC2实例上运行,但是我无法通过NodePort IP地址访问群集应用程序。
我正在考虑通过以下方式访问群集Flask应用程序的最简单方法:5000通过我的本地浏览器?
背景到目前为止:
这是我的群集设置:
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 EC2s有任何喜悦,我愿意接受各种想法:)
提前致谢..
您应该能够通过EC2公共IP访问您的应用程序NodePort。您只需要在节点实例安全组中允许NodePort端口。要允许所有NodePort,您需要允许端口范围30000-32767从0.0.0.0/0。
如果你只想打开5000端口 - 那么你需要将hostNetwork: true
放在你的部署规范中:
spec:
hostNetwork: true
此外,您还需要在安全组中允许端口5000