k8s集群监控(代码片段)

fengzi7314 fengzi7314     2023-04-12     199

关键词:

部署metrics

kubernetes早期版本依靠Heapster来实现完整的性能数据采集和监控功能,k8s在1.8版本开始,性能数据开始以Metrics API的方式提供标准化接口,并且从1.10版本开始讲Heapster替换为Metrics Server,在新版本的Metrics当中可以对Node,Pod的cpu,内存的使用指标进行监控

我们可以先在k8s集群当中用kubectl top命令去尝试查看资源使用率,如下:

可以看到并不能查看资源,这是因为没有安装Metrics

[root@master redis]# kubectl top nodes
Error from server (NotFound): the server could not find the requested resource (get services http:heapster:)

Metrics部署文件在github上可以找到,如下:

技术图片

 

 

 我们点进去然后把它的代码下载下来

[root@master test]# git clone https://github.com/kubernetes-sigs/metrics-server.git
正克隆到 metrics-server...
remote: Enumerating objects: 53, done.
remote: Counting objects: 100% (53/53), done.
remote: Compressing objects: 100% (43/43), done.
remote: Total 11755 (delta 12), reused 27 (delta 3), pack-reused 11702
接收对象中: 100% (11755/11755), 12.35 MiB | 134.00 KiB/s, done.
处理 delta 中: 100% (6113/6113), done.

进入部署代码目录

[root@master test]# cd metrics-server/deploy/kubernetes/

在metrics-server-deployment.yaml 我们需要添加如下4行内容

技术图片

 开始部署文件

[root@master kubernetes]# kubectl apply -f .
clusterrole.rbac.authorization.k8s.io/system:aggregated-metrics-reader created
clusterrolebinding.rbac.authorization.k8s.io/metrics-server:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/metrics-server-auth-reader created
apiservice.apiregistration.k8s.io/v1beta1.metrics.k8s.io created
serviceaccount/metrics-server created
deployment.apps/metrics-server created
service/metrics-server created
clusterrole.rbac.authorization.k8s.io/system:metrics-server created
clusterrolebinding.rbac.authorization.k8s.io/system:metrics-server created

查看metrics pod的状态

技术图片

 

 

 查看api

技术图片

 

 

 我们可以用kubectl proxy来尝试访问这个新的api

技术图片

 

 

技术图片

 

 

 没有任何问题,接下来我们在去尝试用kubectl top命令,可以看到已经可以正常使用了

技术图片

 

 

 部署grafana+prometheus集群性能监控平台

Prometheus是有SoundCloud公司开发的开源监控系统,是继kubernetes之后CNCF第二个毕业项目,在容器和微服务领域得到了广泛应用,Prometheus有以下特点:

  • 使用指标名称及键值对标识的多维度数据模型
  • 采用灵活的查询语言PromQL
  • 不依赖分式存储,为自治的单节点服务
  • 使用HTTP完成对监控数据的拉取
  • 支持通过网关推送时序数据
  • 支持多种图形和dashboard的展示,例如Grafana

prometheus架构图

技术图片

 

 

 开始部署第一步

 

 

技术图片

 

 

 

 1.下载文件到本地

[root@master test]# git clone https://github.com/iKubernetes/k8s-prom.git
正克隆到 k8s-prom...
remote: Enumerating objects: 49, done.
remote: Total 49 (delta 0), reused 0 (delta 0), pack-reused 49
Unpacking objects: 100% (49/49), done.

2.创建名称空间

[root@master k8s-prom]# kubectl apply -f namespace.yaml 
namespace/prom created

3.部署k8s-prom中的node_exporter/中的yaml文件来让prometheus获取数据

[root@master k8s-prom]# kubectl apply -f node_exporter/
daemonset.apps/prometheus-node-exporter created
service/prometheus-node-exporter created

4.部署prometheus/中的yaml文件

[root@master k8s-prom]# kubectl apply -f prometheus/
configmap/prometheus-config created
deployment.apps/prometheus-server created
clusterrole.rbac.authorization.k8s.io/prometheus created
serviceaccount/prometheus created
clusterrolebinding.rbac.authorization.k8s.io/prometheus created
service/prometheus created

5.部署k8s-prom中的k8s-prometheus-adapter/中的文件,但是由于这个文件中用的是http协议,但是我们k8s当中用的是https协议,所以在部署前需要创建秘钥

[root@master k8s-prom]# cd /etc/kubernetes/pki/
[root@master pki]# (umask 077;openssl genrsa -out serving.key 2048)
Generating RSA private key, 2048 bit long modulus
.....+++
.....................................+++
e is 65537 (0x10001)
[root@master pki]# openssl req -new -key serving.key -out serving.csr -subj "/CN=serving"
[root@master pki]# openssl x509 -req -in serving.csr -CA ./ca.crt -CAkey ./ca.key -CAcreateserial -out serving.crt -days 3650
Signature ok
subject=/CN=serving
Getting CA Private Key
[root@master pki]# kubectl create secret generic cm-adapter-serving-certs --from-file=serving.crt=./serving.crt --from-file=serving.key=./serving.key -n prom 
secret/cm-adapter-serving-certs created

 

6.部署k8s-prom中的k8s-prometheus-adapter/中的文件

[root@master k8s-prom]# kubectl apply -f k8s-prometheus-adapter/
clusterrolebinding.rbac.authorization.k8s.io/custom-metrics:system:auth-delegator created
rolebinding.rbac.authorization.k8s.io/custom-metrics-auth-reader created
deployment.apps/custom-metrics-apiserver created
clusterrolebinding.rbac.authorization.k8s.io/custom-metrics-resource-reader created
serviceaccount/custom-metrics-apiserver created
service/custom-metrics-apiserver created
apiservice.apiregistration.k8s.io/v1beta1.custom.metrics.k8s.io created
clusterrole.rbac.authorization.k8s.io/custom-metrics-server-resources created
configmap/adapter-config created
clusterrole.rbac.authorization.k8s.io/custom-metrics-resource-reader created
clusterrolebinding.rbac.authorization.k8s.io/hpa-controller-custom-metrics created

7.部署kube-state-metrics中的yaml文件

[root@master k8s-prom]# kubectl apply -f kube-state-metrics/

8.部署grafana.yaml文件

[root@master k8s-prom]# kubectl apply -f grafana.yaml 
deployment.apps/monitoring-grafana created
service/monitoring-grafana created

9.验证各个pod运行无误

[root@master k8s-prom]# kubectl get ns
NAME              STATUS   AGE
default           Active   19h
kube-node-lease   Active   19h
kube-public       Active   19h
kube-system       Active   19h
prom              Active   10m
[root@master k8s-prom]# kubectl get pods -n prom
NAME                                        READY   STATUS    RESTARTS   AGE
custom-metrics-apiserver-7666fc78cc-xlnzn   1/1     Running   0          3m25s
monitoring-grafana-846dd49bdb-8gpkw         1/1     Running   0          61s
prometheus-node-exporter-45qxt              1/1     Running   0          8m28s
prometheus-node-exporter-6mhwn              1/1     Running   0          8m28s
prometheus-node-exporter-k6d7m              1/1     Running   0          8m28s
prometheus-server-69b544ff5b-9mk9x          1/1     Running   0          107s
[root@master k8s-prom]# kubectl get svc -n prom
NAME                       TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
custom-metrics-apiserver   ClusterIP   10.98.67.254    <none>        443/TCP          4m2s
monitoring-grafana         NodePort    10.102.49.116   <none>        80:30080/TCP     97s
prometheus                 NodePort    10.107.21.128   <none>        9090:30090/TCP   2m24s
prometheus-node-exporter   ClusterIP   None            <none>        9100/TCP         9m5s

10.打开浏览器

技术图片

 

 

 配置为

技术图片

 

 

 导入模板

技术图片

 

 

 技术图片

 

k8s集群监控(代码片段)

...Node,Pod的cpu,内存的使用指标进行监控我们可以先在k8s集群当中用kubectltop命令去尝试查看资源使用率,如下:可以看到并不能查看资源,这是因为没有安装Metrics[root@masterredis]#kubectltopnodesErrorfromserver(NotFound):theservercouldnotfindthereq... 查看详情

k8s可视化监控之-weavescope(代码片段)

...境中k8s应用部署众多,需要一款可视化工具方便日常获知集群的实时状态,并为故障排查提供及时和准确的数据支持。在此背景下,Weaveworks的项目WeaveScope应运而生,其是一款Docker和Kubernetes可视化监控工具。Scope提供了至上而下... 查看详情

kube-prometheus监控k8s集群外服务的两种方式(代码片段)

方式一:通过ServiceMonitor方式创建Service和ServiceMonitor文件名为external-node.yaml---apiVersion:v1kind:Servicemetadata:name:external-node-exporternamespace:monitoringlabels:app:external-node-exporterapp.kubernetes. 查看详情

kubernetes(k8s)之在集群环境部署prometheus(普罗米修斯监控)和集群的ui管理工具grafana(代码片段)

PrometheusPrometheus演示环境部署Prometheus和Grafana测试PrometheusPrometheus是一个开源系统监控和警报工具包。现在是一个独立的开源项目,独立于任何公司进行维护。Prometheus基本原理是通过HTTP协议周期性抓取被监控组件的状态,... 查看详情

精品kubernetes(k8s)集群top命令监控pod度量指标(代码片段)

需求描述提示:做到举一反三就要学会使用help信息找出标签是name=cpu-user的Pod,并过滤出使用CPU最高的Pod,然后把它的名字写在已经存在的/opt/cordon.txt文件里分析:了解pod指标,主要需要关注,CPU与内存... 查看详情

k8s之监控利器weavescope详解(代码片段)

前言创建kubernetes集群并部署容器化应用只是第一步,一旦集群运行起来,我们需要确保运行正常,所有必要组件就位并各司其职,有足够的资源满足应用的要求。kubernetes是一个复杂的系统,运维团队需要有一套工具帮助他们获... 查看详情

kubernetes(k8s)之资源监控(代码片段)

...trics-Server演示环境Metrics-Server部署Metrics-ServerMetrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster。容器相关的Metrics主要来自于kubelet内置的cAdvisor服务,有了Metrics-Server之后,用户就可以通过标准的Ku 查看详情

k8s资源监控metrics-server(代码片段)

...由用户直接访问,例如通过使用kubectltop命令,或者使用集群中的控制器。MetricsAPI:通过MetricsAPI,您可以获得node或pod当前的资源使用情况(但是 查看详情

prometheus+grafan监控k8s集群详解(代码片段)

一,Prometheus概述1,什么是Prometheus?Prometheus是最初在SoundCloud上构建的开源系统监视和警报工具包,自2012年成立以来,许多公司和组织都采用了Prometheus,该项目拥有非常活跃的开发人员和用户社区。现在,它是一个独立的开源... 查看详情

k8s:通过kubeshark体验大白鲨(wireshark)/tcpdump监控kubernetes集群(代码片段)

写在前面分享一个k8s集群流量查看器很轻量的一个工具,监控方便博文内容涉及:Kubeshark简单介绍Windows、Linux下载运行监控DemoKubeshark特性功能介绍理解不足小伙伴帮忙指正对每个人而言,真正的职责只有一个:找... 查看详情

kubernetes集群搭建zabbix监控平台(代码片段)

kubernetes集群搭建Zabbix监控平台一、zabbix介绍1.zabbix简介2.zabbix特点3.zabbix的主要功能4.zabbix架构图二、检查本地k8s环境1.检查系统pod运行状态2.检查node节点状态三、配置nfs共享存储1.安装nfs2.创建共享目录3.配置共享目录4..启动相关... 查看详情

k8snetworkpolicylimitrange和resourcequota详解k8s运行zookeeper,mysql,jenkins集群k8s集群及应用监控prometheus(代码片段)

1.基于NetworkPolicy限制magedunamespace中的所有pod不能跨namespace访问(只能访问当前namespace中的所有pod)。#在default下创建2个deploy,centos7-default和nginx1-defaultroot@k8s-master1:~/20230328#vimcentos7-default.yamlapiVersion:apps/v1kind:Deploymentmetadata:labels:app:c... 查看详情

使用dashboard管理k8s集群(代码片段)

一、DashBoard之前在kubernetes中完成的所有操作都是通过命令行工具kubectl完成的。其实,为了提供更丰富的用户体验,kubernetes还开发了一个基于web的用户界面(Dashboard)。用户可以使用Dashboard部署容器化的应用,... 查看详情

搭建prometheus监控k8s服务(代码片段)

...heus,是使用的coreos提供的prometheus项目MetricsServer:是k8s集群资源使用情况的聚合器,收集数据给k8s集群内使用,如kubectl,hpa,scheduler等。PrometheusOperator:是一个系统检测和警报工具箱,用来存储监控数据。Prometheusnode-ex... 查看详情

云原生之kubernetes实战在k8s集群下部署weavescope监控平台(代码片段)

【云原生之kubernetes实战】在k8s集群下部署WeaveScope监控平台一、WeaveScope介绍1.WeaveScope简介2.WeaveScope的特点3.WeaveScope的组成二、检查本地kubernetes集群状态1.检查工作节点状态2.检查系统pod状态三、安装nfs共享存储1.安装nfs2.创建共享... 查看详情

k8s实战--edusoho平台创建(代码片段)

...平台创建基本信息说明使用kubeadm方式安装kubernetesKubernetes集群添加/删除NodeKubernetesDashboard1.8.3部署k8s原生的集群监控方案(Heapster+InfluxDB+Grafana)项目地址k8s-edusoho平台创建镜像下载如上面的项目地址无法使用,请使用下面链接下... 查看详情

加入k8s集群(代码片段)

加入k8s集群在使用kubeadm安装k8s中介绍了如何安装k8s主节点,这篇文章我们来介绍如何加入k8s集群。环境要求?同上一篇的环境要求首先,从我们的镜像服务器获取docker镜像获取镜像shell脚本然后,获取加入k8s集群的授权码?在上篇... 查看详情

k8s集群部署rook-ceph存储系统及使用(代码片段)

...象的文件系统和CephOSD(对象存储守护程序)进程。在Ceph集群上,您还可以找到CephMON(监控)守护程序,它们确保Ceph集群保持高可用性。RookRook是一个开源的cloud-nativestorage编排,提供平台和框架;为各 查看详情