As configurações da Verificação de saúde do GCE estão revertendo para o padrão

2

Eu configurei um Load Balancer no GCP usando um Ingress no Kubernetes Engine.

O serviço de back-end, por padrão, registrou todas as instâncias como não íntegras. Atualizei a verificação de integridade para o protocolo HTTPS e o / healthz url, já que essa é a URL da minha verificação de integridade.

Deixei isso em paz por alguns minutos e o serviço de back-end declara que todas as instâncias estão íntegras agora. Depois, vejo nos registros que meu pod está atendendo a 200 respostas no / healthz.

Eu navego até a página e ela começa a mostrar um erro 502. Volto para a página de verificação de integridade no console e a verificação de integridade é revertida para HTTP em /.

O que fez com que a verificação de integridade voltasse ao HTTP? Aqui estão os registros mostrando que por 10 minutos a verificação de integridade continua solicitando os https que eu configurei, então a solicitação é alterada novamente para http.

...
[W 180621 20:02:35 iostream:1451] SSL Error on 9 ('10.128.0.14', 48346): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:02:35 iostream:1451] SSL Error on 9 ('10.128.0.13', 63030): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.14) 0.75ms
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.13) 0.80ms
[I 180621 20:02:43 web:2106] 200 GET /healthz (10.128.0.14) 0.74ms
...
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.13) 1.26ms
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.14) 0.63ms
[I 180621 20:05:46 web:2106] 200 GET /healthz (10.128.0.15) 0.64ms
[W 180621 20:05:46 iostream:1451] SSL Error on 9 ('10.128.0.14', 49971): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:46 iostream:1451] SSL Error on 9 ('10.128.0.15', 62893): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:48 iostream:1451] SSL Error on 9 ('10.128.0.13', 52191): [SSL: HTTP_REQUEST] http request (_ssl.c:833)
[W 180621 20:05:48 iostream:1451] SSL Error on 9 ('10.128.0.13', 60549): [SSL: HTTP_REQUEST] http request (_ssl.c:833)

EDIT: Estou adicionando o probe readiness para o pod em questão, que o ingresso está anexado.

readinessProbe:
  httpGet:
    port: 8902
    scheme: HTTPS
    path: /healthz
  initialDelaySeconds: 5
  periodSeconds: 10
  successThreshold: 1
    
por lamorach 15.06.2018 / 00:23

2 respostas

1

Eu verifiquei e é necessário um comportamento pretendido.

Kubernetes controls the health check and configures it from data inside the kubernetes cluster. Kubernetes does not see any changes made to the health check via gcloud.

Por isso, acho normal que ele seja verificado e que qualquer modificação seja revertida.

A solução para usar readinessProbe em seu lugar.

Por favor, dê uma olhada também para this :

Health checks

Currently, all service backends must satisfy either of the following requirements to pass the HTTP(S) health checks sent to it from the GCE loadbalancer:

  1. Respond with a 200 on '/'. The content does not matter.

  2. Expose an arbitrary URL as a readiness probe on the pods backing the Service.

The Ingress controller looks for a compatible readiness probe first, if it finds one, it adopts it as the GCE loadbalancer's HTTP(S) health check. If there's no readiness probe, or the readiness probe requires special HTTP headers, the Ingress controller points the GCE loadbalancer's HTTP health check at '/'.

    
por 27.06.2018 / 10:28
0

Parece que os seus back-ends estão sendo veiculados apenas no protocolo HTTPS, mas você implantou um recurso Ingress para o protocolo HTTP. Alterar manualmente a configuração após a implantação não é a solução, pois o mestre reverteria as alterações para obedecer ao manifesto. Por este documento , você pode proteger um Ingress especificando um segredo que contenha uma chave privada e um certificado TLS. Atualmente, o Ingress suporta apenas uma única porta TLS, 443, e assume a terminação TLS.

    
por 24.06.2018 / 04:58