Kubernetes: LoadBalancer a retardé le routage vers les pods après RollingUpdate

Créé le 5 déc. 2016  ·  3Commentaires  ·  Source: kubernetes/kubernetes

Est-ce une demande d'aide ? (Si oui, vous devez utiliser notre guide de dépannage et les canaux d'assistance de la communauté, voir http://kubernetes.io/docs/troubleshooting/.) :
Non

Quels mots clés avez-vous recherchés dans les problèmes Kubernetes avant de déposer celui-ci ? (Si vous avez trouvé des doublons, vous devriez plutôt y répondre.) :

https://github.com/kubernetes/kubernetes/issues?page=3&q=is%3Aissue+is%3Aopen+loadbalancer+update&utf8=%E2%9C%93


S'agit-il d'un rapport de bogue ou d'une demande de fonctionnalité ? (choisissez-en un):
Rapport d'erreur

Version de Kubernetes (utilisez kubectl version ) :
Client 1.4.4
Groupe 1.4.6

Environnement :

  • Fournisseur de cloud ou configuration matérielle : GKE
  • OS (par exemple depuis /etc/os-release) :
  • Noyau (par exemple uname -a ):
  • Installer les outils :
  • Autres :
    Cluster à 3 nœuds

Que s'est-il passé :
Appliquez une mise à jour continue, voyez les nouveaux pods arriver à Running and Ready, les anciens pods se terminent.
Entraîne des délais d'expiration lors de l'accès à l'équilibreur de charge. Attendez quelques minutes et le trafic est correctement acheminé.

Ce à quoi vous vous attendiez :
Le trafic est acheminé de manière transparente vers les nouveaux pods.

Comment le reproduire (le moins et le plus précisément possible) :
https://gist.github.com/1d668ba12b12f450e8feffb21383ba44

kubectl apply -f deployment.yaml
kubectl get svc , attendez que l'adresse IP externe apparaisse.
Vérifiez que le trafic est correctement acheminé.

Modifier quelque chose (comme la variable d'environnement)
kubectl apply -f deployment.yaml
Attendez que les anciens pods soient résiliés. Observez les délais d'expiration jusqu'à ce que l'équilibreur de charge se mette à jour.

Tout ce que nous devons savoir d'autre :

Commentaire le plus utile

Confirmé. La combinaison de la vidange et du contrôle de l'état de préparation n'a entraîné aucun temps d'arrêt :
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Désolé pour le rapport erroné.

Tous les 3 commentaires

Je pense que la fin des pods entraînera l'échec des demandes par défaut car il n'y a pas de "vidange de connexion" dans Kubernetes --- vous devrez basculer manuellement la sonde de préparation de l'application "juste à temps": https://github.com/RisingStack/ kubernetes-graceful-shutdown-example

Vous ne savez pas si c'est votre problème (ne voyez pas la source de votre application / image Docker).

Code source de l'application :
https://gist.github.com/d68192f04e3ff50bf9bf7e90ee879077

Je vais essayer de modifier le code source pour drainer les requêtes. Il est logique que cela puisse être le problème.

Confirmé. La combinaison de la vidange et du contrôle de l'état de préparation n'a entraîné aucun temps d'arrêt :
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Désolé pour le rapport erroné.

Cette page vous a été utile?
0 / 5 - 0 notes