Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何访问安装在Azure中运行的托管K8上的ingress nginx命名空间中的Prometheus和Grafana?_Azure_Kubernetes - Fatal编程技术网

如何访问安装在Azure中运行的托管K8上的ingress nginx命名空间中的Prometheus和Grafana?

如何访问安装在Azure中运行的托管K8上的ingress nginx命名空间中的Prometheus和Grafana?,azure,kubernetes,Azure,Kubernetes,我已经按照上的说明安装了Prometheus和Grafana,以监控ingress nginx控制器的性能 然而,访问普罗米修斯仪表盘的指令对我来说并不适用 实际上,根据说明,我们应该能够通过以下命令返回的IP之一访问服务: kubectl get nodes --selector=kubernetes.io/role!=master -o jsonpath={.items[*].status.addresses[?\(@.type==\"InternalIP\"\)].ad

我已经按照上的说明安装了Prometheus和Grafana,以监控ingress nginx控制器的性能

然而,访问普罗米修斯仪表盘的指令对我来说并不适用

实际上,根据说明,我们应该能够通过以下命令返回的IP之一访问服务:

kubectl get nodes --selector=kubernetes.io/role!=master -o jsonpath={.items[*].status.addresses[?\(@.type==\"InternalIP\"\)].address}
但是,我不明白这是怎么可能的,因为IP是集群内部的。即使在他们的文件中:

如果IP地址
10.192.0.2 10.192.0.3 10.192.0.4
在集群内部,它怎么可能工作


以下是我所拥有的:

mark@D-LP0003:~$ kubectl get svc -n ingress-nginx
NAME                                 TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
grafana                              NodePort       10.0.6.223     <none>          3000:32275/TCP               23m
ingress-nginx-controller             LoadBalancer   10.0.254.117   40.76.145.210   80:32542/TCP,443:31960/TCP   51m
ingress-nginx-controller-admission   ClusterIP      10.0.110.16    <none>          443/TCP                      51m
prometheus-server                    NodePort       10.0.208.16    <none>          9090:32053/TCP               48m
mark@D-LP0003:~$
我得到相同的内部IP

我发现访问仪表板的唯一方法是通过客户端端口转发:

kubectl port-forward svc/prometheus-server 9090:9090 -n ingress-nginx  &
然后我可以在
http://localhost:9090

但我不想要它。该服务应该可以从外部访问,那么我如何访问它呢?

您几乎没有选择

  • 由于您在Azure中,您可以创建
    LoadBalancer
    类型服务,而不是
    NodePort
    类型服务来公开grafana和prometheus。您将获得可用于访问服务的外部IP

  • 使用主节点IP和节点端口访问它。假设主节点具有外部IP。普罗米修斯使用
    MASTERNODEIP:32053
    ,格拉法纳使用
    MASTERNODEIP:32275

  • 使用入口资源公开它们。您已经为nginx入口控制器的LoadBalancer提供了一个外部IP。使用该IP访问它。要知道如何做,请参阅


  • 但是我如何获得主IP?kubectl get节点不显示任何主节点!我甚至不明白这怎么可能!如果是AKS群集..主节点不会向您公开。检查kubeconfig文件中可能具有主节点IP的服务器字段。也可以尝试备选方案2和3
    mark@D-LP0003:~$ kubectl get nodes --selector=kubernetes.io/role!=master -o jsonpath={.items[*].status.addresses[?\(@.type==\"InternalIP\"\)].address}
    10.240.0.4 10.240.0.5 10.240.0.6mark@D-LP0003:~$
    
    kubectl port-forward svc/prometheus-server 9090:9090 -n ingress-nginx  &