问题已经解决了,这是我整理得解决方案
起因:公司需求我对容器得java程序做了监控,用的prometheus得jmx-exporter,涉及问题:
问题一:kubesphere启动得prometheus没法外网访问(使用的版本为 KubeSphere v2.1.1)
问题二:prometheus配置文件web页面上无法更改
问题一解决方案:
1.先找到prometheus得svc得yaml文件,并且备份,删除这个svc
kubectl edit svc prometheus-k8s -n kubesphere-monitoring-system # 打开配置,自行备份
kubectl delete svc prometheus-k8s -n kubesphere-monitoring-system # 删除svc
2.根据原来得yaml文件改成自己所需要得nodeport,暴露端口,创建新的svc

kubectl create -f ***.yaml
问题二解决方案:
因为kubesphere自身配置prometheus用得prometheus operator ,所以我们可以创建ServiceMonitor #官网链接https://github.com/prometheus-operator/prometheus-operator/blob/master/Documentation/api.md#servicemonitorspec
** 三个注意点**
1.暴露jmx-exporter服务得service需要创建label标签

2.创建 ServiceMonitor需要放到 kubesphere-monitoring-system空间下,并且需要将创建得ServiceMonitor得name放到
kubectl edit prometheuses -n kubesphere-monitoring-system

3.ServiceMonitor得yaml文件
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: spingexam
namespace: kubesphere-monitoring-system
labels:
k8s-app: spingexam
spec:
endpoints:
- port: spingexam-jmx # exporter暴露端口得名称
interval: 5s
namespaceSelector:
matchNames:
- sh-smy # 监控服务所在得namespace
selector:
matchLabels:
k8s-app: spingexam #这个是服务svc得label,千万不能写成java服务得label