Kubernetes: LoadBalancer atrasou o roteamento para pods após RollingUpdate

Criado em 5 dez. 2016  ·  3Comentários  ·  Fonte: kubernetes/kubernetes

Isso é um pedido de ajuda? (Se sim, você deve usar nosso guia de solução de problemas e canais de suporte da comunidade, consulte http://kubernetes.io/docs/troubleshooting/.):
Não

Quais palavras-chave você pesquisou nos problemas do Kubernetes antes de registrar este? (Se você encontrou alguma duplicata, responda lá.):

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


Este é um RELATÓRIO DE ERRO ou SOLICITAÇÃO DE RECURSO? (escolha um):
Relatório de erro

Versão do Kubernetes (use kubectl version ):
Cliente 1.4.4
Grupo 1.4.6

Ambiente :

  • Provedor de nuvem ou configuração de hardware : GKE
  • SO (por exemplo, de /etc/os-release):
  • Kernel (por exemplo uname -a ):
  • Instalar ferramentas :
  • Outros :
    cluster de 3 nós

O que aconteceu :
Aplique uma atualização contínua, veja os novos pods ficarem em execução e prontos, os pods antigos serão encerrados.
Resulta em tempos limite ao atingir o balanceador de carga. Aguarde alguns minutos e o tráfego será roteado corretamente.

O que você esperava que acontecesse :
O tráfego é roteado perfeitamente para os novos pods.

Como reproduzi-lo (o mínimo e preciso possível):
https://gist.github.com/1d668ba12b12f450e8feffb21383ba44

kubectl apply -f deployment.yaml
kubectl get svc , espere o IP externo aparecer.
Observe que o tráfego é roteado corretamente.

Edite algo (como a variável de ambiente)
kubectl apply -f deployment.yaml
Aguarde até que os pods antigos sejam encerrados. Observe os tempos limite até que o balanceador de carga se atualize.

Qualquer outra coisa que precisamos saber :

Comentários muito úteis

Confirmado. A combinação de drenagem e verificação de prontidão resultou em tempo de inatividade zero:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Desculpe pelo relatório errado.

Todos 3 comentários

Acho que encerrar pods levará a solicitações com falha por padrão, pois não há "drenagem de conexão" no Kubernetes --- você teria que alternar manualmente a sonda de prontidão do aplicativo "just in time": https://github.com/RisingStack/ kubernetes-graceful-shutdown-exemplo

Não tenho certeza se esse é o seu problema (não veja a fonte do seu aplicativo/imagem do Docker).

Código fonte do aplicativo:
https://gist.github.com/d68192f04e3ff50bf9bf7e90ee879077

Vou tentar alterar o código-fonte para drenar solicitações. Faz sentido que este possa ser o problema.

Confirmado. A combinação de drenagem e verificação de prontidão resultou em tempo de inatividade zero:
https://gist.github.com/ac98158ccfd0c006de0bb0bc7d31a596

Desculpe pelo relatório errado.

Esta página foi útil?
0 / 5 - 0 avaliações