烦请刘老师帮忙排查Helm+Operator部署Prometheus监控系统时候的问题
来源:12-5 部署前奏 - Helm & Operator

davidge
2019-06-26
刘老师,你好:
你的K8s的视频录制的非常好,这段时间一直在跟着视频学习,收益匪浅。
这几天在学习通过Helm+Operator部署Prometheus监控系统的时候,一直无法搭建成功,
我检查了很久都没有找到问题,在describe 无法创建的pod时候发现有如下etcd-certs的相关错误:
kubectl -n monitoring describe pod prometheus-imooc-prom-prometheus-oper-prometheus-0
Warning FailedMount 17m (x3653 over 5d18h) kubelet, k8node353 Unable to mount volumes for pod “prometheus-imooc-prom-prometheus-oper-prometheus-0_monitoring(afc8066e-9335-11e9-a3ed-000c296cc6b7)”: timeout expired waiting for volumes to attach or mount for pod “monitoring”/“prometheus-imooc-prom-prometheus-oper-prometheus-0”. list of unmounted volumes=[secret-etcd-certs]. list of unattached volumes=[config config-out prometheus-imooc-prom-prometheus-oper-prometheus-rulefiles-0 secret-etcd-certs prometheus-imooc-prom-prometheus-oper-prometheus-db imooc-prom-prometheus-oper-prometheus-token-pl7r8]
Warning FailedMount 112s (x4086 over 5d18h) kubelet, k8node353 MountVolume.SetUp failed for volume “secret-etcd-certs” : secret “etcd-certs” not found
pod的状态:
里面有2个一直无法创建:,其他的ds ,svc ,deployment都正常。statefulset不正常,估计应该是下面2个pod导致的。
[root@k8madmin prometheus-operator]# kubectl get pod -n monitoring
NAME READY STATUS RESTARTS AGE
alertmanager-imooc-prom-prometheus-oper-alertmanager-0 1/2 CrashLoopBackOff 1688 6d
imooc-prom-grafana-749bb8799c-lrmr6 2/2 Running 0 6d
imooc-prom-kube-state-metrics-fd68f88dc-tw4vk 1/1 Running 0 6d
imooc-prom-prometheus-node-exporter-km7l5 1/1 Running 0 6d
imooc-prom-prometheus-node-exporter-s7l8z 1/1 Running 0 6d
imooc-prom-prometheus-node-exporter-w4cjn 1/1 Running 0 6d
imooc-prom-prometheus-oper-operator-545dc8949b-4j5pf 1/1 Running 0 6d
prometheus-imooc-prom-prometheus-oper-prometheus-0 0/3 ContainerCreating 0 6d
我的练习环境是v1.13.3:
通过kubeadm方式部署:
[root@k8madmin prometheus-operator]# kubectl get node
NAME STATUS ROLES AGE VERSION
k8madmin Ready master 16d v1.13.3
k8node252 Ready 16d v1.13.3
k8node353 Ready 16d v1.13.3
后来我在网上看到有人说和etcd的证书有关,我就回头找helm init时候指定的ssl证书问题,
helm init时候指定配置:
我也创建了ssl文件夹但是没有生成下面图片所标注的**.pem** 证书,是否这个证书需要自己事先创建好,如果是? 请问如何创建?谢谢!
同时,我也尝试去创建example-etcd-cluster.yaml,但是也没有成功,不知道是否需要创建?
kubectl apply -f example-etcd-cluster.yaml
error: unable to recognize “example-etcd-cluster.yaml”: no matches for kind “EtcdCluster” in version “etcd.database.coreos.com/v1beta2”
[root@k8madmin prometheus-operator]# cat example-etcd-cluster.yaml
apiVersion: "etcd.database.coreos.com/v1beta2"
kind: "EtcdCluster"
metadata:
name: "example-etcd-cluster"
spec:
size: 3
version: "3.2.13"
如果有描述不清楚的地方请告诉我,烦请有空的时候帮忙排查一下这个问题,谢谢!
1回答
-
问题提的非常详细,看的很明白,遗憾的是我也没碰到过类似的问题,只能给你个我碰到这种问题的思路了,因为你是用kubeadm装的,etcd也是跑在容器里的,相当于是集群内,所以pro operator就把它也容纳进来了,然后它访问etcd是需要证书的,这个错误应该就是没有找到证书,具体可以查看ds的详情,看看挂载的部分来确认,如果它需要一个secret或是configmap,而集群中没有的话就是要手动创建了,就是把证书文件base64后放在里面,这块之前的课程都有涉及。也可以修改它的配置把证书的依赖去掉试一下
082020-03-14
相似问题