Kubernetes: LoadBalancer retrasó el enrutamiento a los pods después de RollingUpdate

Creado en 5 dic. 2016  ·  3Comentarios  ·  Fuente: kubernetes/kubernetes

¿Es esto una solicitud de ayuda? (En caso afirmativo, debe usar nuestra guía de solución de problemas y los canales de soporte de la comunidad, consulte http://kubernetes.io/docs/troubleshooting/).
No

¿Qué palabras clave buscó en los problemas de Kubernetes antes de presentar este? (Si ha encontrado duplicados, debe responder allí):

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


¿Es esto un INFORME DE ERROR o una SOLICITUD DE CARACTERÍSTICAS? (elige uno):
Informe de error

Versión de Kubernetes (use kubectl version ):
Cliente 1.4.4
Grupo 1.4.6

Medio ambiente :

  • Proveedor de la nube o configuración de hardware : GKE
  • SO (por ejemplo, de /etc/os-release):
  • Núcleo (por ejemplo uname -a ):
  • Instalar herramientas :
  • Otros :
    Clúster de 3 nodos

que paso :
Aplique una actualización progresiva, vea cómo los nuevos pods se ejecutan y están listos, los pods antiguos terminan.
Da como resultado tiempos de espera cuando se golpea el balanceador de carga. Espere unos minutos y el tráfico se enrutará correctamente.

Lo que esperabas que sucediera :
El tráfico se enruta sin problemas a los nuevos pods.

Cómo reproducirlo (de la forma más mínima y precisa posible):
https://gist.github.com/1d668ba12b12f450e8feffb21383ba44

kubectl apply -f deployment.yaml
kubectl get svc , espere a que aparezca la IP externa.
Observe que el tráfico se enruta correctamente.

Edite algo (como la variable de entorno)
kubectl apply -f deployment.yaml
Espere a que finalicen los pods antiguos. Observe los tiempos de espera hasta que el balanceador de carga se actualice.

Algo más que necesitamos saber :

Comentario más útil

Confirmado. La combinación del drenaje y la verificación de disponibilidad resultó en cero tiempo de inactividad:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Perdón por el informe erróneo.

Todos 3 comentarios

Creo que la terminación de los pods dará lugar a solicitudes fallidas de forma predeterminada, ya que no hay un "drenaje de conexión" en Kubernetes --- tendrías que alternar manualmente la sonda de preparación de la aplicación "justo a tiempo": https://github.com/RisingStack/ kubernetes-graceful-shutdown-example

No estoy seguro de si este es su problema (no ve la fuente de su aplicación/imagen de Docker).

Código fuente de la aplicación:
https://gist.github.com/d68192f04e3ff50bf9bf7e90ee879077

Intentaré alterar el código fuente para drenar las solicitudes. Tiene sentido que este pueda ser el problema.

Confirmado. La combinación del drenaje y la verificación de disponibilidad resultó en cero tiempo de inactividad:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Perdón por el informe erróneo.

¿Fue útil esta página
0 / 5 - 0 calificaciones