烦请刘老师帮忙排查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回答

刘果国

2019-06-27

问题提的非常详细,看的很明白,遗憾的是我也没碰到过类似的问题,只能给你个我碰到这种问题的思路了,因为你是用kubeadm装的,etcd也是跑在容器里的,相当于是集群内,所以pro operator就把它也容纳进来了,然后它访问etcd是需要证书的,这个错误应该就是没有找到证书,具体可以查看ds的详情,看看挂载的部分来确认,如果它需要一个secret或是configmap,而集群中没有的话就是要手动创建了,就是把证书文件base64后放在里面,这块之前的课程都有涉及。也可以修改它的配置把证书的依赖去掉试一下

0
8
pkarqi001
回复
慕侠3072357
kubectl -n monitoring create secret generic etcd-certs --from-file=/etc/kubernetes/pki/ca.pem --from-file=/etc/kubernetes/pki/etcd.pem --from-file=/etc/kubernetes/pki/etcd-key.pem
2020-03-14
共8条回复

Kubernetes生产落地全程实践

一个互联网公司落地Kubernetes全过程点点滴滴

2293 学习 · 2216 问题

查看课程