监控

本文介绍了对 Harvester Monitoring 进行故障排除的提示。

Monitoring 不可用

如果 Harvester Dashboard 没有显示任何监控指标,可能原因如下。

Pod 卡在 Terminating 状态导致 Monitoring 无法使用

Harvester Monitoring pod 随机部署在集群节点上。当托管 Pod 的节点意外宕机时,相关的 Pod 可能会卡在 Terminating 状态,导致 WebUI 无法使用 Monitoring。

  1. $ kubectl get pods -n cattle-monitoring-system
  2. NAMESPACE NAME READY STATUS RESTARTS AGE
  3. cattle-monitoring-system prometheus-rancher-monitoring-prometheus-0 3/3 Terminating 0 3d23h
  4. cattle-monitoring-system rancher-monitoring-admission-create-fwjn9 0/1 Terminating 0 137m
  5. cattle-monitoring-system rancher-monitoring-crd-create-9wtzf 0/1 Terminating 0 137m
  6. cattle-monitoring-system rancher-monitoring-grafana-d9c56d79b-ph4nz 3/3 Terminating 0 3d23h
  7. cattle-monitoring-system rancher-monitoring-grafana-d9c56d79b-t24sz 0/3 Init:0/2 0 132m
  8. cattle-monitoring-system rancher-monitoring-kube-state-metrics-5bc8bb48bd-nbd92 1/1 Running 4 4d1h
  9. ...

你可以使用 CLI 命令强制删除相关 Pod 来恢复监控。集群将重新部署新的 Pod 来替换它们。

  1. # 删除命名空间 cattle-monitoring-system 中所有未运行的 Pod。
  2. $ kubectl delete pod --force -n cattle-monitoring-system prometheus-rancher-monitoring-prometheus-0
  3. pod "prometheus-rancher-monitoring-prometheus-0" force deleted
  4. $ kubectl delete pod --force -n cattle-monitoring-system rancher-monitoring-admission-create-fwjn9
  5. $ kubectl delete pod --force -n cattle-monitoring-system rancher-monitoring-crd-create-9wtzf
  6. $ kubectl delete pod --force -n cattle-monitoring-system rancher-monitoring-grafana-d9c56d79b-ph4nz
  7. $ kubectl delete pod --force -n cattle-monitoring-system rancher-monitoring-grafana-d9c56d79b-t24sz

等待几分钟,以便创建新的 Pod 并准备好让 Monitoring 仪表板再次可用。

  1. $ kubectl get pods -n cattle-monitoring-system
  2. NAME READY STATUS RESTARTS AGE
  3. prometheus-rancher-monitoring-prometheus-0 0/3 Init:0/1 0 98s
  4. rancher-monitoring-grafana-d9c56d79b-cp86w 0/3 Init:0/2 0 27s
  5. ...
  6. $ kubectl get pods -n cattle-monitoring-system
  7. NAME READY STATUS RESTARTS AGE
  8. prometheus-rancher-monitoring-prometheus-0 3/3 Running 0 7m57s
  9. rancher-monitoring-grafana-d9c56d79b-cp86w 3/3 Running 0 6m46s
  10. ...

扩展 PV/卷的大小

Harvester 集成了 Longhorn 作为默认的存储解决方案。

Harvester Monitoring 使用 Persistent Volume (PV) 来存储运行数据。集群运行一段时间后,你可能需要扩展 PV 的大小。

参照 Longhorn 卷的扩展指南Harvester 将说明如何进行卷的大小扩展。

查看卷

使用嵌入式 Longhorn WebUI

根据此文档访问嵌入式 Longhorn WebUI。

监控 - 图1

默认视图。

监控 - 图2

单击 Volume 列出所有现有的卷。

监控 - 图3

使用 CLI

你还可以使用 kubectl 来查看所有卷。

  1. # kubectl get pvc -A
  2. NAMESPACE NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
  3. cattle-monitoring-system alertmanager-rancher-monitoring-alertmanager-db-alertmanager-rancher-monitoring-alertmanager-0 Bound pvc-1b2fbbe9-14b1-4a65-941a-7d5645a89977 5Gi RWO harvester-longhorn 43h
  4. cattle-monitoring-system prometheus-rancher-monitoring-prometheus-db-prometheus-rancher-monitoring-prometheus-0 Bound pvc-7c6dcb61-51a9-4a38-b4c5-acaa11788978 50Gi RWO harvester-longhorn 43h
  5. cattle-monitoring-system rancher-monitoring-grafana Bound pvc-b2b2c07c-f7cd-4965-90e6-ac3319597bf7 2Gi RWO harvester-longhorn 43h
  6. # kubectl get volume -A
  7. NAMESPACE NAME STATE ROBUSTNESS SCHEDULED SIZE NODE AGE
  8. longhorn-system pvc-1b2fbbe9-14b1-4a65-941a-7d5645a89977 attached degraded 5368709120 harv31 43h
  9. longhorn-system pvc-7c6dcb61-51a9-4a38-b4c5-acaa11788978 attached degraded 53687091200 harv31 43h
  10. longhorn-system pvc-b2b2c07c-f7cd-4965-90e6-ac3319597bf7 attached degraded 2147483648 harv31 43h

缩减 Deployment

要停止挂载,你需要先缩减正在使用Deployment

以下示例将针对 rancher-monitoring-grafana 使用的 PVC。

在命名空间 cattle-monitoring-system 中找到 Deployment

  1. # kubectl get deployment -n cattle-monitoring-system
  2. NAME READY UP-TO-DATE AVAILABLE AGE
  3. rancher-monitoring-grafana 1/1 1 1 43h // target deployment
  4. rancher-monitoring-kube-state-metrics 1/1 1 1 43h
  5. rancher-monitoring-operator 1/1 1 1 43h
  6. rancher-monitoring-prometheus-adapter 1/1 1 1 43h

rancher-monitoring-grafana Deployment 缩减为 0。

  1. # kubectl scale --replicas=0 deployment/rancher-monitoring-grafana -n cattle-monitoring-system

检查 Deployment 和卷。

  1. # kubectl get deployment -n cattle-monitoring-system
  2. NAME READY UP-TO-DATE AVAILABLE AGE
  3. rancher-monitoring-grafana 0/0 0 0 43h // scaled down
  4. rancher-monitoring-kube-state-metrics 1/1 1 1 43h
  5. rancher-monitoring-operator 1/1 1 1 43h
  6. rancher-monitoring-prometheus-adapter 1/1 1 1 43h
  7. # kubectl get volume -A
  8. NAMESPACE NAME STATE ROBUSTNESS SCHEDULED SIZE NODE AGE
  9. longhorn-system pvc-1b2fbbe9-14b1-4a65-941a-7d5645a89977 attached degraded 5368709120 harv31 43h
  10. longhorn-system pvc-7c6dcb61-51a9-4a38-b4c5-acaa11788978 attached degraded 53687091200 harv31 43h
  11. longhorn-system pvc-b2b2c07c-f7cd-4965-90e6-ac3319597bf7 detached unknown 2147483648 43h // volume is detached

扩展卷

在 Longhorn WebUI 中,相关卷的状态会变成 Detached。点击 Operation 栏中的图标,然后选择 Expand Volume

监控 - 图4

输入一个新的大小,然后 Longhorn 会将卷扩展到这个大小。

监控 - 图5

扩展 Deployment

扩展到目标大小后,你需要将上述 Deployment 扩展到其原始副本的大小。在上述 rancher-monitoring-grafana 示例中,原始副本的值为 1。

  1. # kubectl scale --replicas=1 deployment/rancher-monitoring-grafana -n cattle-monitoring-system

再次检查 Deployment。

  1. # kubectl get deployment -n cattle-monitoring-system
  2. NAME READY UP-TO-DATE AVAILABLE AGE
  3. rancher-monitoring-grafana 1/1 1 1 43h // scaled up
  4. rancher-monitoring-kube-state-metrics 1/1 1 1 43h
  5. rancher-monitoring-operator 1/1 1 1 43h
  6. rancher-monitoring-prometheus-adapter 1/1 1 1 43h

已附加到新的 Pod。

监控 - 图6

至此,你已将扩展到新的大小,Pod 可以正常使用卷。