K8S-Demo集群实践16:部署Kube-Prometheus

kube-prometheus 是一整套监控解决方案,使用 Prometheus 采集集群指标,Grafana 做展示,包含如下组件:

  • The Prometheus Operator
  • Highly available Prometheus
  • Highly available Alertmanager
  • Prometheus node-exporter
  • Prometheus Adapter for Kubernetes Metrics APIs (k8s-prometheus-adapter)
  • kube-state-metrics
  • Grafana

一、准备容器镜像

  • 因为容器镜像文件较大,如果不提前推送到私有容器镜像仓库,部署过程可能会失败

1、下载容器镜像

  • quay.io/prometheus-operator/prometheus-operator:v0.44.1
  • quay.io/prometheus-operator/prometheus-config-reloader:v0.44.1
  • quay.io/prometheus-operator/prometheus-operator:v0.44.1
  • quay.io/brancz/kube-rbac-proxy:v0.8.0
  • quay.io/prometheus/prometheus:v2.22.1
  • quay.io/prometheus/alertmanager:v0.21.0
  • quay.io/prometheus/node-exporter:v1.0.1
  • directxman12/k8s-prometheus-adapter:v0.8.2
  • quay.io/coreos/kube-state-metrics:v1.9.7
  • grafana/grafana:7.3.5

2、并推送到私有容器镜像仓库harbor.demo

  • harbor.demo/middleware/prometheus-operator/prometheus-operator:v0.44.1
  • harbor.demo/middleware/prometheus-operator/prometheus-config-reloader:v0.44.1
  • harbor.demo/middleware/prometheus-operator/prometheus-operator:v0.44.1
  • harbor.demo/middleware/brancz/kube-rbac-proxy:v0.8.0
  • harbor.demo/middleware/prometheus/prometheus:v2.22.1
  • harbor.demo/middleware/prometheus/alertmanager:v0.21.0
  • harbor.demo/middleware/prometheus/node-exporter:v1.0.1
  • harbor.demo/middleware/k8s-prometheus-adapter:v0.8.2
  • harbor.demo/middleware/coreos/kube-state-metrics:v1.9.7
  • harbor.demo/middleware/grafana:7.3.5

二、部署 kube-prometheus

1、下载部署yaml文件

[root@master1 ~]# cd /opt/install
[root@master1 install]# git clone https://github.com/coreos/kube-prometheus.git

2、修改yaml文件中的容器镜像地址

  • /opt/install/kube-prometheus/manifests/setup/prometheus-operator-deployment.yaml
  • /opt/install/kube-prometheus/manifests/alertmanager-alertmanager.yaml
  • /opt/install/kube-prometheus/manifests/grafana-deployment.yaml
  • /opt/install/kube-prometheus/manifests/kube-state-metrics-deployment.yaml
  • /opt/install/kube-prometheus/manifests/node-exporter-daemonset.yaml
  • /opt/install/kube-prometheus/manifests/prometheus-prometheus.yaml
  • /opt/install/kube-prometheus/manifests/prometheus-adapter-deployment.yaml

3、部署 prometheus-operator

[root@master1 ~]# cd /opt/install/kube-prometheus
[root@master1 kube-prometheus]# kubectl apply -f manifests/setup

4、部署 promethes metric adapter

[root@master1 ~]# cd /opt/install/kube-prometheus
[root@master1 kube-prometheus]# kubectl apply -f manifests/

三、查看运行状态

1、查看服务运行状态

[root@master1 kube-prometheus]# kubectl get svc -n monitoring
NAME                    TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)                      AGE
alertmanager-main       ClusterIP   10.8.182.125   <none>        9093/TCP                     2d
alertmanager-operated   ClusterIP   None           <none>        9093/TCP,9094/TCP,9094/UDP   2d
grafana                 NodePort    10.8.31.234    <none>        3000:31253/TCP               2d
kube-state-metrics      ClusterIP   None           <none>        8443/TCP,9443/TCP            2d
node-exporter           ClusterIP   None           <none>        9100/TCP                     2d
prometheus-adapter      ClusterIP   10.8.5.198     <none>        443/TCP                      2d
prometheus-k8s          ClusterIP   10.8.212.162   <none>        9090/TCP                     2d
prometheus-operated     ClusterIP   None           <none>        9090/TCP                     2d
prometheus-operator     ClusterIP   None           <none>        8443/TCP                     2d
  • 问题:为什么有的服务ClusterIP显示为None?
  • 有时不需要或不想要负载均衡,以及单独的 Service IP,遇到这种情况,可以通过指定 Cluster IP(spec.clusterIP)的值为 “None” 来创建 Headless Service
  • 这个选项允许开发人员自由定义寻找服务的方式,从而降低与 Kubernetes 系统的耦合性。 应用仍然可以使用一种自注册的模式和适配器,对其它需要发现机制的系统能够很容易地基于这个 API 来构建。
  • 对这类 Service 并不会分配 Cluster IP,kube-proxy 不会处理它们,而且平台也不会为它们进行负载均衡和路由。
  • DNS 如何实现自动配置,依赖于 Service 是否定义了 selector。

2、查看Pod运行状态

[root@master1 kube-prometheus]# kubectl get pod -n monitoring
NAME                                  READY   STATUS    RESTARTS   AGE
alertmanager-main-0                   2/2     Running   20         2d
alertmanager-main-1                   2/2     Running   7          2d
alertmanager-main-2                   2/2     Running   15         2d
grafana-5d4bc79f5b-zfzgc              1/1     Running   10         2d
kube-state-metrics-575986bd49-l7drz   3/3     Running   29         2d
node-exporter-bxk7r                   2/2     Running   16         2d
node-exporter-jj7vp                   2/2     Running   16         2d
node-exporter-s2rbn                   2/2     Running   14         2d
node-exporter-t78rb                   2/2     Running   16         2d
node-exporter-trc5c                   2/2     Running   16         2d
node-exporter-zgc4d                   2/2     Running   20         2d
prometheus-adapter-6dd6c8dd64-jpjx4   1/1     Running   15         2d
prometheus-k8s-0                      2/2     Running   16         2d
prometheus-k8s-1                      2/2     Running   21         2d
prometheus-operator-79476dd78-lw6cc   2/2     Running   8          2d

3、查看endpoints

[root@master1 kube-prometheus]# kubectl get ep -n monitoring
NAME                    ENDPOINTS                                                              AGE
alertmanager-main       172.8.104.54:9093,172.8.135.28:9093,172.8.166.191:9093                 2d
alertmanager-operated   172.8.104.54:9094,172.8.135.28:9094,172.8.166.191:9094 + 6 more...     2d
grafana                 172.8.135.30:3000                                                      2d
kube-state-metrics      172.8.104.55:9443,172.8.104.55:8443                                    2d
node-exporter           192.168.66.10:9100,192.168.66.11:9100,192.168.66.12:9100 + 3 more...   2d
prometheus-adapter      172.8.104.52:6443                                                      2d
prometheus-k8s          172.8.135.33:9090,172.8.166.190:9090                                   2d
prometheus-operated     172.8.135.33:9090,172.8.166.190:9090                                   2d
prometheus-operator     172.8.166.132:8443                                                     2d

4、查看configmap

[root@master1 kube-prometheus]# kubectl get cm -n monitoring
NAME                                                  DATA   AGE
adapter-config                                        1      2d
grafana-dashboard-apiserver                           1      2d
grafana-dashboard-cluster-total                       1      2d
grafana-dashboard-controller-manager                  1      2d
grafana-dashboard-k8s-resources-cluster               1      2d
grafana-dashboard-k8s-resources-namespace             1      2d
grafana-dashboard-k8s-resources-node                  1      2d
grafana-dashboard-k8s-resources-pod                   1      2d
grafana-dashboard-k8s-resources-workload              1      2d
grafana-dashboard-k8s-resources-workloads-namespace   1      2d
grafana-dashboard-kubelet                             1      2d
grafana-dashboard-namespace-by-pod                    1      2d
grafana-dashboard-namespace-by-workload               1      2d
grafana-dashboard-node-cluster-rsrc-use               1      2d
grafana-dashboard-node-rsrc-use                       1      2d
grafana-dashboard-nodes                               1      2d
grafana-dashboard-persistentvolumesusage              1      2d
grafana-dashboard-pod-total                           1      2d
grafana-dashboard-prometheus                          1      2d
grafana-dashboard-prometheus-remote-write             1      2d
grafana-dashboard-proxy                               1      2d
grafana-dashboard-scheduler                           1      2d
grafana-dashboard-statefulset                         1      2d
grafana-dashboard-workload-total                      1      2d
grafana-dashboards                                    1      2d
prometheus-k8s-rulefiles-0                            1      2d

四、访问 Prometheus UI

  • 端口转发
[root@master1 ~]# kubectl port-forward --address 0.0.0.0 pod/prometheus-k8s-0 -n monitoring 9090:9090
Forwarding from 0.0.0.0:9090 -> 9090
Handling connection for 9090
Handling connection for 9090
  • 在浏览器访问 http://192.168.66.10:9090/graph
    在这里插入图片描述

五、访问 Grafana UI

  • 通过NodePort方式暴露服务:http://192.168.66.10:31253/login
  • 这里IP地址可以是集群中任何一个节点的IP地址
  • 默认用户名:admin 密码:admin,第一次登录会提示设置新密码
    在这里插入图片描述
  • 登录成功看到如下界面
    在这里插入图片描述

在这里插入图片描述

  • 下载一个中文模板并导入 https://grafana.com/grafana/dashboards/13105,该模板全面展示集群资源,包含K8S整体资源总览、微服务资源明细、Pod资源明细及K8S网络带宽,优化重要指标展示

在这里插入图片描述

附专栏链接

K8S-Demo集群实践00:搭建镜像仓库Harbor+安全扫描
K8S-Demo集群实践01:准备VMware虚拟机模板
K8S-Demo集群实践02:准备VMware虚拟机3台Master+3台Node
K8S-Demo集群实践03:准备集群各组件间HTTPS通讯需要的x509证书
K8S-Demo集群实践04:部署etcd三节点高可用集群
K8S-Demo集群实践05:安装kubectl并配置集群管理员账户
K8S-Demo集群实践06:部署kube-apiserver到master节点(3个无状态实例)
K8S-Demo集群实践07:kube-apiserver高可用方案
K8S-Demo集群实践08:部署高可用kube-controller-manager集群
K8S-Demo集群实践09:部署高可用kube-scheduler集群
K8S-Demo集群实践10:部署ipvs模式的kube-proxy组件
K8S-Demo集群实践11:部署ipvs模式的kube-kubelet组件
K8S-Demo集群实践12:部署Calico网络
K8S-Demo集群实践13:部署集群CoreDNS
K8S-Demo集群实践14:部署集群监控服务Metrics Server
K8S-Demo集群实践15:部署Kubernetes Dashboard
K8S-Demo集群实践16:部署Kube-Prometheus
K8S-Demo集群实践17:部署私有云盘owncloud(10.6版本)
K8S-Demo集群实践18:构建宇宙中第一个基础容器镜像


  • 先用起来,通过操作实践认识k8s,积累多了自然就理解了
  • 把理解的知识分享出来,自造福田,自得福缘
  • 追求简单,容易使人理解,知识的上下文也是知识的一部分,例如版本,时间等
  • 欢迎留言交流,也可以提出问题,一般在周末回复和完善文档
  • Jason@vip.qq.com 2021-1-28
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值