Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 错误504网关超时nginx入口控制器_Amazon Ec2_Kubernetes_Nginx Ingress_Rancher_Rke - Fatal编程技术网

Amazon ec2 错误504网关超时nginx入口控制器

Amazon ec2 错误504网关超时nginx入口控制器,amazon-ec2,kubernetes,nginx-ingress,rancher,rke,Amazon Ec2,Kubernetes,Nginx Ingress,Rancher,Rke,我正在EC2 AWS实例中设置RKE群集,但我在尝试设置nginx入口控制器时遇到问题,有时我在尝试访问它时出错。我的架构是: 实例#1只是在每个节点中执行负载平衡器的nginx服务器,#2和#3是RKE节点,它们都具有以下角色: -控制平面 -工人 -etcd 我部署了两个服务/部署。我试图设置一个nginx入口控制器,根据路径将流量重定向到每个服务,但有时我只得到504网关超时,而其他一个加载正确。使用hey进行一个小负载测试,我发现几乎50%的用户得到了504错误。 状态代码分布: [2

我正在EC2 AWS实例中设置RKE群集,但我在尝试设置nginx入口控制器时遇到问题,有时我在尝试访问它时出错。我的架构是:

实例#1只是在每个节点中执行负载平衡器的nginx服务器,#2和#3是RKE节点,它们都具有以下角色: -控制平面 -工人 -etcd

我部署了两个服务/部署。我试图设置一个nginx入口控制器,根据路径将流量重定向到每个服务,但有时我只得到504网关超时,而其他一个加载正确。使用hey进行一个小负载测试,我发现几乎50%的用户得到了504错误。 状态代码分布: [200]102条答复 [504]98回应

调试nginx入口控制器我看到其中一个似乎没有到达服务,我认为出于这个原因,有时我会出现504错误,但我不知道为什么

2020/01/27 01:40:31 [error] 1767#1767: *128496 upstream timed out (110: Connection timed out) while connecting to upstream, client: 10.0.1.163, server: <host>, request: "GET /nginx HTTP/1.1", upstream: "http://10.42.1.4:80/", host: “<Host>"
2020/01/27 01:40:31[error]1767#1767:*128496上游连接到上游时超时(110:连接超时),客户端:10.0.1.163,服务器:,请求:“GET/nginx HTTP/1.1”,上游:http://10.42.1.4:80/,主机:“
kubernetes配置:

apiVersion: apps/v1
kind: Deployment
metadata:
name: system-deployment
labels:
app: system
spec:
replicas: 1
selector:
matchLabels:
app: system
template:
metadata:
labels:
app: system
spec:
containers:
- name: nginx
image: nginx
ports:
- containerPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: inventory-deployment
labels:
app: inventory
spec:
replicas: 1
selector:
matchLabels:
app: inventory
template:
metadata:
labels:
app: inventory
spec:
containers:
- name: inventory-container
image: dockersamples/101-tutorial
ports:
- containerPort: 80
---

apiVersion: v1
kind: Service
metadata:
name: system-service
spec:
selector:
app: system
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: inventory-service
spec:
selector:
app: inventory
ports:
- protocol: TCP
port: 80
targetPort: 80
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: root-ingress
annotations:
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: <host>
http:
paths:
- path: /nginx
backend:
serviceName: system-service
servicePort: 80
- path: /
backend:
serviceName: inventory-service
servicePort: 80
apiVersion:apps/v1 种类:部署 元数据: 名称:系统部署 标签: 应用程序:系统 规格: 副本:1份 选择器: 火柴标签: 应用程序:系统 模板: 元数据: 标签: 应用程序:系统 规格: 容器: -姓名:nginx 图片:nginx 端口: -集装箱港口:80 --- apiVersion:apps/v1 种类:部署 元数据: 名称:库存部署 标签: 应用程序:库存 规格: 副本:1份 选择器: 火柴标签: 应用程序:库存 模板: 元数据: 标签: 应用程序:库存 规格: 容器: -名称:库存集装箱 图:dockersamples/101教程 端口: -集装箱港口:80 --- 版本:v1 种类:服务 元数据: 名称:系统服务 规格: 选择器: 应用程序:系统 端口: -协议:TCP 港口:80 目标港:80 --- 版本:v1 种类:服务 元数据: 名称:库存服务 规格: 选择器: 应用程序:库存 端口: -协议:TCP 港口:80 目标港:80 --- apiVersion:extensions/v1beta1 种类:入口 元数据: 名称:根入口 注释: nginx.ingres.kubernetes.io/proxy-read-timeout:“3600” nginx.ingres.kubernetes.io/rewrite-target:/ 规格: 规则: -主持人: http: 路径: -路径:/nginx 后端: 服务名称:系统服务 服务端口:80 -路径:/ 后端: 服务名称:库存服务 服务端口:80 我的理论是ingress controller无法访问其他节点中的服务,因为我得到了504错误,但据我所知,集群中的任何节点都可以访问服务。有人知道这里会发生什么


谢谢,

您可能需要通过在AWS EC2 dashboard中创建安全组来允许EC2实例的通信。

您是否测试了从nginx到两个节点的连接,以确保有一个节点没有应答?