使用 AGIC 在 Kubernetes 中使用 Grafana 解决 HTTP 502/404

使用 AGIC 在 Kubernetes 中使用 Grafana 解决 HTTP 502/404

我正在尝试通过 Helm 在 Azure Kubernetes 服务 (AKS) 中部署 Grafana。我使用的是比特纳米我一直在关注这个微软教程设置应用程序网关入口控制器。

这些 Pod 正在运行,我ClusterIP在它们前面有一项服务:

NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)    AGE
my-grafana   ClusterIP   10.0.230.64   <none>        3000/TCP   29m

输出kubectl describe svc

Name:              my-grafana
Namespace:         default
Labels:            app.kubernetes.io/component=grafana
                   app.kubernetes.io/instance=my-grafana
                   app.kubernetes.io/managed-by=Helm
                   app.kubernetes.io/name=grafana
                   helm.sh/chart=grafana-8.4.5
Annotations:       meta.helm.sh/release-name: my-grafana
                   meta.helm.sh/release-namespace: default
                   service.beta.kubernetes.io/azure-load-balancer-internal: true
Selector:          app.kubernetes.io/component=grafana,app.kubernetes.io/instance=my-grafana,app.kubernetes.io/name=grafana
Type:              ClusterIP
IP Family Policy:  SingleStack
IP Families:       IPv4
IP:                10.0.168.200
IPs:               10.0.168.200
Port:              http  3000/TCP
TargetPort:        dashboard/TCP
Endpoints:         10.244.0.20:3000,10.244.0.21:3000
Session Affinity:  None
Events:            <none>

接下来,我还定义了一个入口,它使用 AGIC 自动配置应用程序网关 (AGW)(AGW 和 AKS 集群在同一个资源组中定义)。

NAME         CLASS    HOSTS   ADDRESS         PORTS   AGE
my-grafana   <none>   *       52.XXX.XXX.XXX   80      29m

输出kubectl describe ing

Name:             my-grafana
Labels:           app.kubernetes.io/component=grafana
                  app.kubernetes.io/instance=my-grafana
                  app.kubernetes.io/managed-by=Helm
                  app.kubernetes.io/name=grafana
                  helm.sh/chart=grafana-8.4.5
Namespace:        default
Address:          52.XXX.XXX.XXX
Ingress Class:    <none>
Default backend:  <default>
Rules:
  Host        Path  Backends
  ----        ----  --------
  *
              /*   my-grafana:http (10.244.0.16:3000,10.244.0.17:3000)
Annotations:  kubernetes.io/ingress.class: azure/application-gateway
              meta.helm.sh/release-name: my-grafana
              meta.helm.sh/release-namespace: default
Events:
  Type     Reason               Age                From                       Message
  ----     ------               ----               ----                       -------
  Warning  PortResolutionError  31m (x2 over 32m)  azure/application-gateway  Code="ErrorServiceResolvedToInvalidPort" Message="service default/my-grafana and service port http was resolved to an invalid service-backend port 65536, defaulting to port 80"

如果我尝试连接到外部地址(连接到 AGW 的公共 IP),则使用上述配置会收到 HTTP 502 错误。

如果我在文件中更改hostname: "*"为,公共 IP 现在将返回 HTTP 404 错误。hostname: grafana.localvalues.yaml

当我连接到其中一个 pod 时,我可以使用集群 IP 以及每个 pod 单独连接到 Grafana,在端口 3000 上。

据我所知,问题出在 AGW 和 Ingress/Service 之间,但我不知道该进一步调查什么。任何提示都将不胜感激!

相关内容