部署k8s監控(1.1):Prometheus-operator監控k8s集羣的各個組件及pod(二進制環境)

環境是使用二進制安裝的,使用kubeadm則很難遇到這種狀況

初步部署prometheus-operator會遇到兩個問題:
一、配置安裝中遇到的坑
二、配置完成後數據的持久化問題
這篇博客首先解決安裝中遇到的坑,下一篇作持久化node

1、下載安裝文件

[root@k8s-master1 prometheus]# git clone https://github.com/coreos/kube-prometheus.git
	[root@k8s-master1 prometheus]# cd ./kube-prometheus/manifests/

2、修改yaml文件(開啓nodeport,方便外網用戶訪問)

[root@k8s-master1 manifests]# vim ./grafana-service.yaml 
		apiVersion: v1
		kind: Service
		metadata:
		  labels:
		    app: grafana
		  name: grafana
		  namespace: monitoring
		spec:
		  type: NodePort 		#添加的內容
		  ports:
		  - name: http
		    port: 3000
		    targetPort: http
		    nodePort: 30100 #添加的內容
		  selector:
		    app: grafana
	[root@k8s-master1 manifests]# vim prometheus-service.yaml 
		apiVersion: v1
		kind: Service
		metadata:
		  labels:
		    prometheus: k8s
		  name: prometheus-k8s
		  namespace: monitoring
		spec:
		  type: NodePort 		#添加的內容
		  ports:
		  - name: web
		    port: 9090
		    targetPort: web
		    nodePort: 30200 #添加的內容
		  selector:
		    app: prometheus
		    prometheus: k8s
		    #刪除最後一行
	[root@k8s-master1 manifests]# vim alertmanager-service.yaml 
		apiVersion: v1
		kind: Service
		metadata:
		  labels:
		    alertmanager: main
		  name: alertmanager-main
		  namespace: monitoring
		spec:
		  type: NodePort  		#添加的內容
		  ports:
		  - name: web
		    port: 9093
		    targetPort: web
		    nodePort: 30300 #添加的內容
		  selector:
		    alertmanager: main
		    app: alertmanager
				#刪除最後一行

3、開啓聚合層及HPA功能(入坑一)

不開啓聚合層的報錯內容大概是:
 		I0514 16:31:41.896256       1 adapter.go:91] successfully using in-cluster auth
 		F0514 16:31:42.216596       1 adapter.go:252] unable to install resource metrics API: cluster doesn't provide requestheader-client-ca-file
 	[root@k8s-master1 ~]# vim /opt/kubernetes/cfg/kube-apiserver
 		--requestheader-client-ca-file=/opt/kubernetes/ssl/ca.pem \
		--requestheader-allowed-names=aggregator \
		--requestheader-extra-headers-prefix=X-Remote-Extra- \
		--requestheader-group-headers=X-Remote-Group \
		--requestheader-username-headers=X-Remote-User \
		--runtime-config=api/all=true \
		--enable-aggregator-routing=true"
	[root@k8s-master1 ~]# vim /op
	t/kubernetes/cfg/kube-controller-manager
		--horizontal-pod-autoscaler-use-rest-clients=true"
	[root@k8s-node1 ~]# vim /opt/kubernetes/cfg/kubelet
		--authentication-token-webhook=true

4、在master節點中安裝kubelet kube-proxy,否則會報錯(入坑二)

將master也做爲一個node節點配置(配置方法相同與node相同,否則會顯示安裝失敗),建議在安裝集羣的時候就安裝上,而不是出現問題後在排查安裝

5、在每臺node節點中安裝kube-apiserver組件(將node節點用到的證書拷貝到指定目錄中,)(入坑三)

#若是不執行此步驟,kubectl top node:只能查看master節點的信息
	[root@k8s-master1 ~]# scp /opt/kubernetes/cfg/kube-apiserver root@192.168.100.30:/opt/kubernetes/cfg/
	[root@k8s-master1 ~]# scp /opt/kubernetes/bin/kube-apiserver root@192.168.100.30:/opt/kubernetes/bin/
	[root@k8s-master1 ~]# scp /usr/lib/systemd/system/kube-apiserver.service root@192.168.100.30:/usr/lib/systemd/system/
	[root@k8s-master1 ~]# scp /opt/kubernetes/cfg/token.csv root@192.168.100.30:/opt/kubernetes/cfg/
	[root@k8s-node1 ~]# vim /opt/kubernetes/cfg/kube-apiserver 
		KUBE_APISERVER_OPTS="--logtostderr=true \
		--v=4 \
		--etcd-servers=https://192.168.100.10:2379,https://192.168.100.30:2379,https://192.168.100.40:2379 \
		--enable-bootstrap-token-auth \
		--token-auth-file=/opt/kubernetes/cfg/token.csv \
		--service-node-port-range=30000-50000 \
		--tls-cert-file=/opt/kubernetes/ssl/server.pem  \
		--tls-private-key-file=/opt/kubernetes/ssl/server-key.pem \
		--client-ca-file=/opt/kubernetes/ssl/ca.pem \
		--service-account-key-file=/opt/kubernetes/ssl/ca-key.pem \
		--etcd-cafile=/opt/etcd/ssl/ca.pem \
		--etcd-certfile=/opt/etcd/ssl/server.pem \
		--etcd-keyfile=/opt/etcd/ssl/server-key.pem \
		--requestheader-client-ca-file=/opt/kubernetes/ssl/ca.pem \
		--requestheader-allowed-names=aggregator \
		--requestheader-extra-headers-prefix=X-Remote-Extra- \
		--requestheader-group-headers=X-Remote-Group \
		--requestheader-username-headers=X-Remote-User \
		--proxy-client-cert-file=/opt/kubernetes/ssl/kube-proxy.pem \
		--proxy-client-key-file=/opt/kubernetes/ssl/kube-proxy-key.pem \
		--runtime-config=api/all=true \
		--enable-aggregator-routing=true"
	[root@k8s-node1 ~]# systemctl restart kube-apiserver

6、配置core-dns(入坑四)

內部組件須要dns的支持
連接:部署k8s組件(13):core-dns的做用和配置的方法git

7、準備工做完成後,進入yaml文件的目錄進行建立

[root@k8s-master1 ~]# cd /root/helm/prometheus/kube-prometheus/manifests/
	[root@k8s-master1 manifests]# kubectl apply -f ./*

8、檢查是否配置成功

[root@k8s-master1 ~]# kubectl top nodes
		NAME             CPU(cores)   CPU%   MEMORY(bytes)   MEMORY%   
		192.168.100.10   109m         5%     809Mi           42%       
		192.168.100.30   115m         5%     1264Mi          32%       
		192.168.100.40   121m         6%     1443Mi          37%

1)查看非健康狀態,若是沒有則說明配置成功http://192.168.100.30:30200
在這裏插入圖片描述
2)查看生成的圖像
在這裏插入圖片描述github

9、登陸到grafana(http://192.168.100.30:30100/login)

默認帳戶:admin
默認密碼:admin
1)配置prometheus
在這裏插入圖片描述
2)測試是否可以否正常使用
在這裏插入圖片描述
3)導入插件
在這裏插入圖片描述
4)回到home,點擊查看node節點圖像
在這裏插入圖片描述
5)查看圖像web

在這裏插入圖片描述

10、若是遇到如下報錯,須要使用如下命令解決(入坑五)

Error from server (BadRequest): a container name must be specified for pod kube-state-metrics-56998d67b9-xcndn, choose one of: [kube-rbac-proxy-main kube-rbac-proxy-self kube-state-metrics addon-resizer]

kubectl delete clusterrolebinding system:anonymous --clusterrole=cluster-admin --user=system:kube-proxybootstrap

11、配置dns時更改網絡可能出現的問題(入坑六)

錯誤: A dependency job for kubelet.service failed. See ‘journalctl -xe’ for details
解決辦法:
flannel或者是其餘如calico程序啓動失敗致使
A dependency job for kubelet.service failed. See ‘journalctl -xe’ for details
[root@k8s-node2 ~]# systemctl restart flanneld
[root@k8s-node2 ~]# systemctl restart kubeletvim

相關文章
相關標籤/搜索