kubernetes - 无法使用 NodePort 公开 Prometheus

kubernetes - unable to expose Prometheus using NodePort

我在 GCP 上安装了 Prometheus,我可以进行端口转发并访问 Prometheus UI

Prometheus Pods,GCP 上的事件:

Karans-MacBook-Pro:prometheus-yamls karanalang$ kc get pods -n monitoring -o wide
NAME                                   READY   STATUS       RESTARTS   AGE     IP           NODE                                                NOMINATED NODE   READINESS GATES
grafana-5ccfb68647-8fjrz               0/1     Terminated   0          28h     <none>       gke-strimzi-prometheus-default-pool-38ca804d-nfvm   <none>           <none>
grafana-5ccfb68647-h7vbr               1/1     Running      0          5h24m   10.76.0.9    gke-strimzi-prometheus-default-pool-38ca804d-zzl9   <none>           <none>
prometheus-operator-85d84bb848-hw6d5   1/1     Running      0          5h24m   10.76.0.4    gke-strimzi-prometheus-default-pool-38ca804d-zzl9   <none>           <none>
prometheus-operator-85d84bb848-znjs6   0/1     Terminated   0          28h     <none>       gke-strimzi-prometheus-default-pool-38ca804d-nfvm   <none>           <none>
prometheus-prometheus-0                2/2     Running      0          5h24m   10.76.0.10   gke-strimzi-prometheus-default-pool-38ca804d-zzl9   <none>           <none>
prometheus-prometheus-1                2/2     Running      0          5h24m   10.76.0.7    gke-strimzi-prometheus-default-pool-38ca804d-zzl9   <none>           <none>
prometheus-prometheus-2                2/2     Running      0          5h24m   10.76.0.11   gke-strimzi-prometheus-default-pool-38ca804d-zzl9   <none>           <none>


Karans-MacBook-Pro:prometheus-yamls karanalang$ kc get endpoints -n monitoring
NAME                  ENDPOINTS                                        AGE
grafana               10.76.0.9:3000                                   28h
grafana-lb            10.76.0.9:3000                                   54m
prometheus-lb         10.76.0.10:9090,10.76.0.11:9090,10.76.0.7:9090   155m
prometheus-nodeport   10.76.0.10:9090,10.76.0.11:9090,10.76.0.7:9090   149m
prometheus-operated   10.76.0.10:9090,10.76.0.11:9090,10.76.0.7:9090   28h
prometheus-operator   10.76.0.4:8080                                   29h

我创建了一个 NodePort(端口 30900),还创建了一个允许进入端口 30900 的防火墙

Karans-MacBook-Pro:prometheus-yamls karanalang$ kc get svc -n monitoring | grep prometheus-nodeport
prometheus-nodeport   NodePort       10.80.7.195   <none>           9090:30900/TCP   146m

但是,当我尝试使用 http://:30900 访问时, url 不可访问。 此外,telnet 到 host/port 无法正常工作

Karans-MacBook-Pro:prometheus-yamls karanalang$ telnet 10.76.0.11 30900
Trying 10.76.0.11...


Karans-MacBook-Pro:prometheus-yamls karanalang$ ping 10.76.0.7
PING 10.76.0.7 (10.76.0.7): 56 data bytes
Request timeout for icmp_seq 0

这是用于创建 NodePort 的 yaml(在监控命名空间中)

apiVersion: v1
kind: Service
metadata:
  name: prometheus-nodeport
spec:
  type: NodePort
  ports:
  - name: web
    nodePort: 30900
    port: 9090
    protocol: TCP
    targetPort: 9090
  selector:
    prometheus: prometheus

对这个问题有什么想法吗? 我如何 debug/resolve 这个?

Karans-MacBook-Pro:prometheus-yamls karanalang$ telnet 10.76.0.11 30900 Trying 10.76.0.11...

Karans-MacBook-Pro:prometheus-yamls karanalang$ ping 10.76.0.7 PING 10.76.0.7 (10.76.0.7): 56 data bytes

从问题中的端点结果判断,您上面使用的 IP 似乎在 Pod CIDR 范围内。这些不是 worker node IP,这意味着您需要首先检查是否可以通过您现在所在的网络(家庭?vpn?internet?)访问任何 worker 节点,并且工作节点已经打开了正确的端口 (30900)。