Wae*_*mas 5 amazon-web-services flask kubernetes kubernetes-ingress amazon-eks
我遇到了一个小问题,它在没有运气的情况下花了很多时间。
我有一个 EKS 集群,我在其中创建了 2 个部署,每个部署都有自己的服务。
我的 2 个应用程序是一个 tensorflow 服务器和一个 Flask 应用程序,它使用专用于它的服务的 IP 在 tf 服务器上运行查询。
现在我想从外部世界访问在两个之一上运行的 Flask 应用程序。所以我创建了一个 Ingress,但是当我尝试“kubectl get ingress”时,它根本没有显示地址。
NAME HOSTS ADDRESS PORTS AGE
nlp-ingress * 80 4h5m
Run Code Online (Sandbox Code Playgroud)
我还注意到 Flask 容器的日志中的以下内容
* Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 343-385-569
192.168.14.156 - - [16/Jul/2020 17:13:24] code 400, message Bad request syntax ('\x16\x03\x01\x00{\x01\x00\x00w\x03\x03')
192.168.14.156 - - [16/Jul/2020 17:13:24] "[35m[1m\00{\00\00w[0m" HTTPStatus.BAD_REQUEST -
192.168.14.156 - - [16/Jul/2020 17:13:24] "[37mGET / HTTP/1.1[0m" 200 -
192.168.14.156 - - [16/Jul/2020 17:13:24] "[37mGET / HTTP/1.1[0m" 200 -
Run Code Online (Sandbox Code Playgroud)
我的入口 yaml 文件如下:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: nlp-ingress
spec:
backend:
serviceName: nlp-client-service
servicePort: 5000
Run Code Online (Sandbox Code Playgroud)
我的 Flask 部署和服务的 yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: nlp-client-deployment
spec:
replicas: 1
selector:
matchLabels:
app: nlp-client
template:
metadata:
labels:
app: nlp-client
spec:
containers:
- name: nlp-client-container
image: myimage:latest
command:
- "python"
- "main.py"
- "--server"
- "nlp-server-service:8501"
ports:
- containerPort: 5000
---
apiVersion: v1
kind: Service
metadata:
labels:
run: nlp-client-service
name: nlp-client-service
spec:
ports:
- port: 5000
targetPort: 5000
selector:
app: nlp-client
type: LoadBalancer
Run Code Online (Sandbox Code Playgroud)
我的目标是在开发过程中测试我的集群。
任何帮助是极大的赞赏。
为了使入口正常工作,您需要一个像这样的入口控制器。最常见的是Nginx 入口控制器。
现在,如果您在同一个集群上运行这两个应用程序,您甚至不需要 TF 服务器上的 Ingress,端口上的普通服务就可以了,假设这是您的TF 服务器正在侦听的5000端口。
如果您仍然想使用 Ingress,您仍然可以使用它,但路径会有点奇怪,这意味着请求将如何离开集群,然后返回集群。
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |