Balanceador de carga HTTP no Google Container Engine usando o Ingress

2

Eu tentei seguir o seguinte tutorial: link

Tudo parece estar funcionando até o final, onde está sendo feito

kubectl describe ingress basic-ingress

retorna

 Name:          basic-ingress
Namespace:      default
Address:        {hidden_external_ip}
Default backend:    nginx:80 ({hidden_internal_ip}:80)
Rules:
  Host  Path    Backends
  ----  ----    --------
  * *   nginx:80 ({hidden_internal_ip}:80)
Annotations:
  backends:     {"k8s-be-00000--0000000000000000":"Unknown"}
  forwarding-rule:  k8s-fw-default-basic-ingress--0000000000000000
  target-proxy:     k8s-tp-default-basic-ingress--0000000000000000
  url-map:      k8s-um-default-basic-ingress--0000000000000000
Events:
  FirstSeen LastSeen    Count   From                SubobjectPath   Type        Reason  Message
  --------- --------    -----   ----                -------------   --    ------    ------  -------
  1m        1m      1   {loadbalancer-controller }          Normal          ADD default/basic-ingress
  23s       23s     1   {loadbalancer-controller }          Normal          CREATE  ip: {hidden_external_ip}

Observe que a linha de back-ends termina com "desconhecido"

Além disso, a ondulação do IP externo retorna isso:

<html><head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>502 Server Error</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Server Error</h1>
<h2>The server encountered a temporary error and could not complete your request.<p>Please try again in 30 seconds.</h2>
<h2></h2>
</body></html>

Alguma ideia do que poderia causar tal problema?

    
por Nepoxx 18.10.2016 / 20:20

2 respostas

4

Eu descobri duas coisas:

  1. O balanceador de carga faz uma verificação de integridade em / (que não é documentada pela AFAIK), portanto, você precisa garantir que seu back-end retorne 200 nesse caminho.

  2. Existe um atraso significativo entre o momento em que o balanceador de carga é criado e quando ele "se torna ativo" (aproximadamente 10 minutos). Quando isso acontecer, a linha: backends: {"k8s-be-00000--0000000000000000":"Unknown"} se tornará: backends: {"k8s-be-00000--0000000000000000":"Healthy"} ou backends: {"k8s-be-00000--0000000000000000":"Unhealthy"} . Esse atraso foi o motivo pelo qual o tutorial vinculado na questão não estava funcionando (realmente deve ser documentado lá ...)

por 28.10.2016 / 17:43
3

O "desconhecido" para o back-end significa que o seu back-end não é "Saudável", o que está causando o erro do servidor 502. Você configurou a verificação de integridade para ouvir na mesma porta que o serviço em execução no back-end? Fazendo o backend retornar saudável deve resolver seu problema. Mais informações sobre como depurar a verificação de integridade podem ser encontradas neste postagem no blog .

    
por 20.10.2016 / 16:26