J'ai un cluster Kubernetes qui exécute une application Django dans un conteneur docker servi par uWSGI. Le contrôleur ingress est ingress-nginx (celui-ci : https://github.com/kubernetes/ingress-nginx ).
Récemment, j'ai effectué une mise à niveau de l'ensemble du cluster de la version 1.9 à la version 1.11, et en raison de certains problèmes, j'ai dû exécuter le programme suivant kubeadm reset
y kubeadm init
encore.
Depuis lors (je suppose), je reçois parfois d'étranges erreurs 502 signalées par les utilisateurs : upstream prematurely closed connection while reading response header from upstream
.
Le plus gros problème pour moi est que ces requêtes ne sont pas visibles dans les journaux uWSGI au sein du conteneur et que je n'ai donc aucune idée de ce qui se passe.
Voici mon fichier uwsgi.ini :
[uwsgi]
http = 0.0.0.0:8000
# Django-related settings
# the base directory (full path)
chdir = /app
# Django's wsgi file
module = in_web_server.wsgi:application
pythonpath = /app
static-map = /static=/app/static
# process-related settings
# master
master = true
# maximum number of worker processes
processes = 10
# clear environment on exit
vacuum = true
# spooler setup
spooler = /spooler
spooler-processes = 2
spooler-frequency = 10
Dockerfile CMD : CMD ["/usr/local/bin/uwsgi", "--ini", "/app/in_web_server/docker/in/in_web_server_uwsgi.ini"]
Kubernetes Ingress :
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: in-debug
namespace: in-debug
annotations:
nginx.ingress.kubernetes.io/proxy-body-size: "0"
nginx.ingress.kubernetes.io/proxy-read-timeout: "3600"
nginx.ingress.kubernetes.io/proxy-send-timeout: "3600"
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($request_uri ~ "^[^?]*?//") {
rewrite "^" $scheme://$host$uri permanent;
}
spec:
rules:
- host: test-in
http:
paths:
- path: "/"
backend:
serviceName: in-debug
servicePort: 8000
Ces erreurs ne concernent que les demandes PUT plus importantes (mais pas très importantes). Par plus grosses, j'entends ~300KB, donc ce n'est pas un gros problème.
De plus, l'erreur 502 est renvoyée après environ 1 minute, il y a donc peut-être un problème de délai d'attente. Cependant, je ne suis pas en mesure de le localiser car il n'y a aucune trace dans le journal uwsgi. Avez-vous une idée de ce que je fais de mal ?