2

次の構成でイングレスを使用して、GKE で consul ui のロードバランサーを作成しています

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: public-apis
spec:
  rules:
    - host: consul.example.com
      http:
        paths:
          - path: /ui/
            pathType: Prefix
            backend:
              serviceName: hashicorp-consul-ui
              servicePort: http

このサービスhashicorp-consul-uiは、タイプが clusterIP のサービスです。

また、次の backendConfig を作成しています

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: consul-ui-backendconfig
spec:
  healthCheck:
    type: HTTP
    requestPath: /v1/health/state/failed
    port: 80

次の注釈を clusterIP サービスに追加していますhashicorp-consul-ui

'cloud.google.com/backend-config': '{"ports": {"80":"consul-ui-backendconfig"}}'

この backendConfig は、イングレスによって作成されたバックエンド サービスのヘルス チェックを作成します。このエンドポイントは 200 を返します。ただし、ヘルス チェックは失敗し、イングレスは異常な状態になります。

healthCheck でログを有効にしましたが、NEG で次のログを取得しています

healthCheckProbeResult: {
   detailedHealthState: "TIMEOUT"    
   healthCheckProtocol: "HTTP"    
   healthState: "UNHEALTHY"    
   ipAddress: "10.24.1.30"    
   previousDetailedHealthState: "UNKNOWN"    
   previousHealthState: "UNHEALTHY"    
   probeCompletionTimestamp: "2021-02-14T03:31:43.337063261Z"    
   probeRequest: "/v1/health/state/failed"    
   probeResultText: "HTTP response: , Error: Connection refused"    
   probeSourceIp: "35.191.9.211"    
   responseLatency: "0.001265s"    
   targetIp: "10.24.1.30"    
   targetPort: 80    
}

また、なぜこのログを 1 回だけ取得したのかわからないのですが、これらのログを定期的に取得するべきではないでしょうか?

また、この healthCheck の問題を修正する方法について誰か教えてもらえますか?

4

1 に答える 1