问题概述
Harvester 升级前,需要对集群和节点状态进行检查,官方提供了 pre-check 检查脚本。可能会出现如下检查不通过的情况:
1 2 3 4 5 6 7 8 9 10 11 12 13
| >>> Check the Harvester bundle is ready... 2,12c2 < modified: 1 < nonReadyResources: < - bundleState: Modified < modifiedStatus: < - apiVersion: monitoring.coreos.com/v1 < kind: ServiceMonitor < missing: true < name: longhorn-prometheus-servicemonitor < namespace: longhorn-system < name: fleet-local/local < ready: 0
|
问题分析
出现这个问题是因为,在安装或者升级的时候,没有安装监控组件,导致对应的监控资源(ServiceMonitor/PrometheusRule)没有部署成功。
可以通过如下命令检查:
1
| kubectl get bundles.fleet.cattle.io -n fleet-local
|
通常可以看到,mcc-harvester 是异常的。
此时如果参考 Longhron 官方文档 手动创建 ServiceMonitor 资源,会发现并没有办法抑制这个错误。这是因为手动创建的对象没有相关注释,无法被 managedchart/bundle 对象识别。
问题解决
- 如果手动创建了 ServiceMonitor 资源,需要先删除掉。
- 接着运行以下命令,触发 Bundle 的更新。
1 2 3 4
| kubectl edit managedchart -n fleet-local harvester
spec: timeoutSeconds: 601 // set to a different value; if original is black,then add it
|
- 此时观察 Bundles ,可能会出现如下报错,不用理会,等待约3分钟,丢失的对象将被重新创建。
1 2 3 4 5 6
| NAMESPACE NAME BUNDLEDEPLOYMENTS-READY STATUS fleet-local mcc-harvester 0/1 ErrApplied(1) [Cluster fleet-local/local: contents.fleet.cattle.io "s-3cf51dab828e31f2144f6dff27d45f7f6d2c317b0a7eead4b419c1ed400b3" not found]; servicemonitor.monitoring.coreos.com longhorn-system/longhorn-prometheus-servicemonitor missing
等待约 3 分钟后: NAMESPACE NAME BUNDLEDEPLOYMENTS-READY STATUS fleet-local mcc-harvester 1/1
|