kubernetes K8s的监控系统Prometheus 酷炫整体容器监控(三)
安装好docker(20.10.7)和K8s(1.21.9),同时网络用flannel(v0.11.0-amd64).
一.下载安装Kube-prometheus
去官网https://github.com/prometheus-operator/kube-prometheus/tags下载v0.8.0版本的。
下载完成之后先把所需要的镜像导入都各个节点,如果能直接下载到官网镜像是最好,但是大部分由于网络的原因镜像都被封了。我这里已经下好了所有镜像,只要直接导入到各个节点即可。https://pan.baidu.com/s/1WLzRmTdbEXih7iAK1HDbWw 提取码: m6jw
1.解压v0.8.0版本的Kube-prometheus
tar -xzvf /tmp/kube-prometheus-0.8.0.tar.gz
cd kube-prometheus-0.8.0/manifests/
rm -f grafana-*.yaml
kubectl apply -f setup/
kubectl apply -f./
首先在每个工作节点都执行
mkdir -p /var/lib/grafana/
chmod 777 -R /var/lib/grafana
执行我们自己定义的grafana8.4.7版本
kubectl apply -f grafana8-deploy.yaml
kubectl apply -f grafana8-svc.yaml --validate=false
这样就基本安装完毕了,接下来看看所有的安装是否都正确执行,如果是下图的样子那基本都执行成功了。
我们通过主节点ip的31091,进行访问
http://10.5.1.28:31091/login 默认用户名和密码都是admin
添加数据源
通过命令查找prometheus的端口,看到端口是31974
引入新的dashboard 模板13105
把模板里面的一个变量,就是下面的,这个包含那个逗号。全部替换为空,然后保存
origin_prometheus=~\"$origin_prometheus\",
至此一个完美的k8s集群监控界面展示完成
由于我对yaml文件有了一些修改。把修改的yaml文件内容标识一下
prometheus-service.yaml
apiVersion: v1
kind: Service
metadata:labels:app.kubernetes.io/component: prometheusapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusapp.kubernetes.io/version: 2.26.0prometheus: k8sname: prometheus-k8snamespace: monitoring
spec:type: NodePortports:- name: webport: 9090targetPort: webselector:app: prometheusapp.kubernetes.io/component: prometheusapp.kubernetes.io/name: prometheusapp.kubernetes.io/part-of: kube-prometheusprometheus: k8s
# sessionAffinity: ClientIP
grafana8-deploy.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: grafana-corenamespace: monitoringlabels:app: grafanacomponent: core
spec:replicas: 1selector:matchLabels:app: grafanacomponent: coretemplate:metadata:labels:app: grafanacomponent: corespec:#nodeName: k8snode1.kirnd.cnsecurityContext:runAsUser: 472runAsGroup: 472fsGroup: 472containers:- image: grafana/grafana:8.4.7name: grafana-core# command: ['sh', '-c', 'chown -R 472:472 /var/lib/grafana']imagePullPolicy: IfNotPresentports:- containerPort: 3000protocol: TCP# env:resources:# keep request = limit to keep this container in guaranteed classlimits:cpu: 2000mmemory: 2048Mirequests:cpu: 2000mmemory: 2048Mienv:# The following env variables set up basic auth twith the default admin user and admin password.- name: GF_AUTH_BASIC_ENABLEDvalue: "true"- name: GF_AUTH_ANONYMOUS_ENABLEDvalue: "false"readinessProbe:httpGet:path: /loginport: 3000# initialDelaySeconds: 30# timeoutSeconds: 1volumeMounts:- mountPath: /varname: grafana-persistent-storage- mountPath: /var/lib/grafana/name: libvolumes:- name: grafana-persistent-storageemptyDir: {}- name: libhostPath:path: /var/lib/grafana/type: DirectoryOrCreate
grafana8-svc.yaml
apiVersion: v1
kind: Service
metadata:name: grafananamespace: monitoringlabels:app: grafanacomponent: core
spec:type: NodePortports:- port: 80targetPort: 3000nodePort: 31091selector:app: grafana
component: core
其他的yaml文件可以在我上面提的云盘里面看到