Ошибка 504 Gateway Time-out nginx - входной контроллер - PullRequest
0 голосов
/ 27 января 2020

Я устанавливаю кластер RKE в экземплярах EC2 AWS, но у меня возникает проблема при попытке установить входной контроллер nginx, иногда при попытке доступа к нему возникает ошибка. у меня есть такая архитектура:

enter image description here

Экземпляр # 1 это просто сервер nginx, который выполняет балансировку нагрузки в каждом узле, # 2 и # 3 являются узлом RKE, оба имеют следующие роли: - controlplane - worker - etcd

Я развернул две службы / развертывания. Я пытался настроить входной контроллер nginx, чтобы перенаправить трафик c на каждую службу в соответствии с путем, но иногда я просто получал 504 Gateway Time-out, а другие загружались правильно. используя эй, чтобы сделать небольшой тест нагрузки, я вижу, что почти 50% получили ошибку 504. Распределение кода состояния: [200] 102 ответа [504] 98 ответов

Отладка контроллера nginx -ingress Я вижу, что один из них, кажется, не достигает службы, я думаю, что по этой причине иногда я получаю ошибку 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>"

Конфигурация 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

Моя теория состоит в том, что входной контроллер не может достичь службы в другом узле для этого I получил ошибку 504, но, насколько я знаю, доступ к сервису может получить любой узел в кластере. кто-то знает, что здесь может произойти?

Спасибо,

1 Ответ

0 голосов
/ 27 января 2020

Возможно, вам нужно разрешить трафик c для вашего экземпляра EC2, создав группу безопасности на AWS панели мониторинга EC2.

...