グローバル HTTP(S) ロード バランサ (Google マネージド TLS 証明書で保護) で公開しようとしている gke にデプロイされた Grafana アプリで、ヘルスチェックの問題に直面しています。
Grafna と InfluxDB の 2 つのアプリを gke にデプロイしています。どちらのサービスも helm でデプロイされ、レプリカが 1 に設定されています。それらの前のサービスは次のようになります。
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/neg: '{"ingress":true}'
meta.helm.sh/release-name: grafana
meta.helm.sh/release-namespace: monitoring
creationTimestamp: "2022-01-06T13:30:16Z"
labels:
app.kubernetes.io/component: grafana
app.kubernetes.io/instance: grafana
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: grafana
helm.sh/chart: grafana-7.5.0
name: grafana
namespace: monitoring
spec:
clusterIP: 10.104.7.143
clusterIPs:
- 10.104.7.143
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 3000
protocol: TCP
targetPort: dashboard
selector:
app.kubernetes.io/component: grafana
app.kubernetes.io/instance: grafana
app.kubernetes.io/name: grafana
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
apiVersion: v1
kind: Service
metadata:
annotations:
cloud.google.com/neg: '{"ingress":true}'
meta.helm.sh/release-name: influxdb
meta.helm.sh/release-namespace: monitoring
creationTimestamp: "2022-01-06T12:22:04Z"
labels:
app.kubernetes.io/component: influxdb
app.kubernetes.io/instance: influxdb
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: influxdb
helm.sh/chart: influxdb-2.4.6
name: influxdb
namespace: monitoring
spec:
clusterIP: 10.104.10.142
clusterIPs:
- 10.104.10.142
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- name: http
port: 8086
protocol: TCP
targetPort: http
- name: rpc
port: 8088
protocol: TCP
targetPort: rpc
selector:
app.kubernetes.io/component: influxdb
app.kubernetes.io/instance: influxdb
app.kubernetes.io/name: influxdb
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
Ingress を適用してロード バランサーを作成すると、Grafana がデフォルトのバックエンド サービスとして設定されていれば、ヘルスチェックが機能し、サービスに到達できます。しかし、別のサービスに新しいルールを追加すると、Grafana バックエンドが異常になります (正常性ルールは変更されませんでした)。Grafana がデフォルトのバックエンドとして設定されておらず、存在する唯一のバックエンドではない場合も同じです。正常性ルールは、レプリカセットに基づいて Google が自動的に作成するルールです。バックエンド タイプはZonal network endpoint group
、grafana と influx の両方に対応しています。
- S1 -グラファナ作品
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: managed-cert-ingress
annotations:
kubernetes.io/ingress.global-static-ip-name: gke-static-ip
networking.gke.io/managed-certificates: managed-cert
kubernetes.io/ingress.class: "gce"
kubernetes.io/ingress.allow-http: "false"
spec:
defaultBackend:
service:
name: grafana
port:
number: 3000
- S2 -デフォルトの k8s バックエンドは機能していますが、バックエンドが正常でないため、Grafana は機能していません
spec:
rules:
- http:
paths:
- path: /grafana/*
pathType: ImplementationSpecific
backend:
service:
name: grafana
port:
number: 3000
- S3 :デフォルトの k8s バックエンドは機能しています、influxdb バックエンドは機能しています、grafana は機能していません: 異常なバックエンド
spec:
rules:
- http:
paths:
- path: /grafana/*
pathType: ImplementationSpecific
backend:
service:
name: grafana
port:
number: 3000
- path: /influxdb/*
pathType: ImplementationSpecific
backend:
service:
name: influxdb
port:
number: 8086
- S4 : Inlfux バックエンドはデフォルトで動作していますが、grafana は動作していません: バックエンドが異常です
spec:
defaultBackend:
service:
name: influxdb
port:
number: 8086
rules:
- http:
paths:
- path: /grafana/*
pathType: ImplementationSpecific
backend:
service:
name: grafana
port:
number: 3000
- path: /influxdb/*
pathType: ImplementationSpecific
backend:
service:
name: influxdb
port:
number: 8086
grafana のすべての失敗シナリオで、ロード バランサーはfailed_to_connect_to_backendタグで502をログに記録します。
InfluxDb バックエンドは、これらすべてのシナリオで正常に機能します。
ファイアウォールルールも確認しましたが、すべて問題ないようです...