背景
kubeSphere中的etcd监控默认安装时没有开启,而且开启了也不会直接生效,因为需要配置etcd的证书。kubeSphere页面上显示也是未启用的。
步骤
查看etcd证书的位置
我的环境是通过rke启动的,不是通过kubeadm,etcd是docker容器,而不是pod。
docker inspect xxx
创建etcd svc
apiVersion: v1
kind: Service
metadata:
name: prometheus-kube-etcd
labels:
app: prometheus-kube-etcd
jobLabel: kube-etcd
release: prometheus
spec:
type: ClusterIP
ports:
- name: https-metrics
port: 2379
protocol: TCP
targetPort: 2379
---
apiVersion: v1
kind: Endpoints
metadata:
name: prometheus-kube-etcd
labels:
app: prometheus-kube-etcd
jobLabel: kube-etcd
release: prometheus
subsets:
- addresses:
- ip: 172.50.60.55
- ip: 172.50.60.88
- ip: 172.50.60.104
ports:
- name: https-metrics
port: 2379
protocol: TCP
测试svc访问
curl -s --cert /etc/kubernetes/ssl/kube-etcd-172-50-60-55.pem --key /etc/kubernetes/ssl/kube-etcd-172-50-60-55-key.pem https://172.50.60.55:2379/metrics -k
修改ks-installer yaml
admin用户登录控制台,点击左上角的平台管理,选择集群管理。
点击定制资源定义,在搜索栏中输入clusterconfiguration,点击ks-installer右侧的三个点 ,选择编辑YAML。
endpointIps如果有多个,必须要用''
括起来,不然不生效。monitoring修改为true。
查看安装日志
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f
查看prometheus日志
日志中有报错信息:启用自带的etcd监控,生成的secret名字是"kube-etcd-client-certs",该secret不存在。
创建secret
kubectl -n kubesphere-monitoring-system create secret generic kube-etcd-client-certs --from-file=/etc/kubernetes/ssl/kube-etcd-172-50-60-55.pem --from-file=/etc/kubernetes/ssl/kube-etcd-172-50-60-55-key.pem --from-file=/etc/kubernetes/ssl/kube-ca.pem
再次查看prometheus日志
prometheus pod重启后,查看日志有新的报错信息:
查看ServiceMonitor
自动生成的ServiceMonitor名字是etcd
修改etcd ServiceMonitor
修改证书
此时prometheus中的target会更新,etcd中的监控数据会中断一小会。
查看etcd监控
点击监控告警–集群状态–etcd监控,数据已经出现。