Maison > Questions et réponses > le corps du texte
J'ai une application VueJS exécutée dans une image Docker dans Kubernetes. Une fois que plusieurs répliques/pods existent, les clients ne peuvent pas charger l'application - de nombreux appels (mais pas tous) pour charger des fichiers renvoient 404.
Je pense que c'est parce qu'ils sont envoyés vers un pod différent de celui qui a initialement traité la demande.
Comment résoudre ce problème ?
Voici ma configuration :
Voici un exemple d'appel qui renvoie 404 : Obtenez https://myapp.mydomain.com/js/chunk-d18c0136.7a3f0664.js
Voici mes spécifications de service :
apiVersion: v1 kind: Service metadata: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} labels: app: ${CI_ENVIRONMENT_SLUG} spec: ports: - port: 80 targetPort: 8080 protocol: TCP name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG} selector: app: ${CI_ENVIRONMENT_SLUG}
Voici ma spécification d'entrée nginx :
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} labels: app: ${CI_ENVIRONMENT_SLUG} annotations: kubernetes.io/ingress.class: "nginx" nginx.ingress.kubernetes.io/affinity: "cookie" nginx.ingress.kubernetes.io/proxy-connect-timeout: "30" nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" spec: defaultBackend: service: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} port: number: 80 rules: - host: ${CI_APPLICATION_HOST} http: paths: - path: / pathType: Prefix backend: service: name: ${CI_PROJECT_NAME}-${CI_BUILD_REF_SLUG_SHORT} port: number: 80
Pour contourner le problème, nous configurons le pare-feu pour qu'il communique directement avec un seul Pod ou n'exécute qu'une seule réplique.
La configuration des "cookies" persistants de session sur l'entrée nginx ne fonctionne pas.
P粉4035496162024-03-30 09:31:57
Désolé, c'est une fausse piste.
En fin de compte, le problème était une faute de frappe dans le routage du proxy externe : seuls deux des six nœuds étaient configurés correctement et accessibles. C'est pourquoi "la plupart" des requêtes renvoient 404 - Node Not Found.