如何在Minishift中启用监控组件?安装报错解决方案咨询
看起来你在Minishift环境下启用OKD监控时遇到了两个核心问题:一是系统用户执行oc -n openshift-monitoring get routes无资源返回,二是手动安装cluster-monitoring-operator时遭遇API版本不兼容错误。这大概率是因为Minishift对应OKD 3.x版本,而你参考的是OKD 4.x的监控文档(两者监控栈完全不同),或是权限配置不到位。下面分场景给出解决方案:
场景1:你确实在用Minishift(OKD 3.x)
OKD 3.x的默认监控栈不是基于Prometheus的,而是依赖Heapster/Metrics Server;如果需要Prometheus生态的监控,得用适配3.x版本的组件:
步骤1:启用默认Metrics组件(Heapster)
Minishift默认未开启Metrics,需要通过addon启用:
# 启用metrics addon minishift addon enable metrics # 应用addon到集群 minishift addon apply metrics
验证部署:
oc get pods -n openshift-infra
你应该能看到heapster-xxx、metrics-server-xxx等Pod处于运行状态。
步骤2:部署适配OKD 3.x的Prometheus监控栈
如果你想要Prometheus+Grafana的监控能力,不能直接使用OKD 4.x的cluster-monitoring-operator(API版本不兼容),要选择适配Kubernetes 1.x(OKD 3.x对应K8s版本)的Prometheus Operator版本:
- 创建监控命名空间:
oc new-project openshift-monitoring
- 拉取兼容版本的Prometheus Operator(以v0.38.1为例,适配OKD 3.11/K8s 1.11):
git clone https://github.com/prometheus-operator/prometheus-operator.git cd prometheus-operator git checkout v0.38.1 # 部署Operator及基础组件 oc apply -f bundle.yaml -n openshift-monitoring
- 部署完成后,可参考官方适配OKD 3.x的配置,创建Prometheus、Alertmanager实例及Grafana。
步骤3:修复系统用户权限问题
如果系统用户无法看到路由资源,是因为缺少对应命名空间的权限:
# 给默认系统用户添加openshift-monitoring命名空间的view权限 oc policy add-role-to-user view system:serviceaccount:default:default -n openshift-monitoring
之后再执行oc -n openshift-monitoring get routes就能看到对应路由了。
场景2:你误将CodeReady Containers(CRC,OKD 4.x)称为Minishift
OKD 4.x(包括CRC本地环境)默认自带基于Prometheus的监控栈,你的问题可能是监控未启用或权限不足:
步骤1:确认监控Operator状态
先检查cluster-monitoring-operator是否正常运行:
oc get pods -n openshift-monitoring
如果没有相关Pod,说明监控被禁用了,需要启用:
编辑监控配置ConfigMap:
oc edit configmap cluster-monitoring-config -n openshift-monitoring
确保配置中包含(如果需要监控用户工作负载):
data: config.yaml: | enableUserWorkload: true
然后重启Operator使其生效:
oc delete pod -n openshift-monitoring -l name=cluster-monitoring-operator
步骤2:修复系统用户权限问题
系统用户看不到路由是因为缺少集群监控视图权限:
# 给目标系统用户添加cluster-monitoring-view集群角色 oc adm policy add-cluster-role-to-user cluster-monitoring-view system:serviceaccount:<你的命名空间>:<你的用户名>
替换<你的命名空间>和<你的用户名>为实际值,之后再查询路由即可看到结果。
注意:OKD 4.x不能手动应用Operator manifests
你之前手动执行oc apply -f manifests/出错,是因为OKD 4.x的监控Operator是通过Operator Lifecycle Manager(OLM)管理的,手动应用manifest会因为API版本依赖或OLM限制失败,正确方式是通过OLM安装或修改默认配置启用监控。
内容的提问来源于stack exchange,提问作者cogitoergosum

