K8s------Metrics-Server资源监控

1 Metrics -Server的介绍

K8s的api-server将所有的数据持久化到了etcd中,显然k8s本身不能处理这种频率的采集,而且这种监控数据变化快且都是临时数据,因此需要有一个组件单独处理他们,k8s版本只存放部分在内存中,于是metric-server的概念诞生了

Metrics-Server是集群核心监控数据的聚合器,用来替换之前的heapster

容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。

metric api的使用:

(1)Metrics API 只可以查询当前的度量数据,并不保存历史数据。

(2)Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护。

(3)必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据

Metrics Server 并不是 kube-apiserver 的一部分,而是通过 Aggregator 这种插件机制,在独立部署的情况下同 kube-apiserver 一起统一对外服务的。

kube-aggregator 其实就是一个根据 URL 选择具体的 API 后端的代理服务器

Metrics-server属于Core metrics(核心指标),提供API metrics.k8s.io,仅提供Node和Pod的CPU和内存使用情况。而其他Custom Metrics(自定义指标)由Prometheus等组件来完成

Metrics server定时从Kubelet的Summary API(类似/ap1/v1/nodes/nodename/stats/summary)采集指标信息,这些聚合过的数据将存储在内存中,且以metric-api的形式暴露出去。

Metrics server复用了api-server的库来实现自己的功能,比如鉴权、版本等,为了实现将数据存放在内存中吗,去掉了默认的etcd存储,引入了内存存储(即实现Storage interface)。因为存放在内存中,因此监控数据是没有持久化的,可以通过第三方存储来拓展,这个和heapster是一致的

资源下载:https://github.com/kubernetes-incubator/metrics-server

Kubernetes 监控架构

在这里插入图片描述

  • 核心流程(黑色部分):这是 Kubernetes正常工作所需要的核心度量,从 Kubelet、cAdvisor等获取度量数据,再由metrics-server提供给 Dashboard、HPA 控制器等使用。

  • 监控流程(蓝色部分):基于核心度量构建的监控流程,比如 Prometheus 可以从 metrics-server获取核心度量,从其他数据源(如 Node Exporter 等)获取非核心度量,再基于它们构建监控告警系统。

2 Metrics-server部署

(1)下载应用文件

wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

在这里插入图片描述

  • 将部署Metrics-server所需的镜像上传至私有仓库

在这里插入图片描述

  • 应用文件: kubectl apply -f components.yaml
  • 查看kube-system命名空间中的pod的信息:kubectl -n kube-system get pod

在这里插入图片描述

(2)解决报错

  • 查看pod失败的原因:kubectl describe -n kube-system pod metrics-server-7f9d59986d-l9z79

在这里插入图片描述

  • pod已经运行,ready时出错,故查看Metrics-server的Pod日志信息
kubectl logs -n kube-system  metrics-server-7f9d59986d-l9z79

在这里插入图片描述

报错2:x509: certificate signed by unknown authority

注意: Metric Server 支持一个参数 --kubelet-insecure-tls,可以跳过这一检查,然而官方也明确说了,这种方式不推荐生产使用。

(3)解决方案:启用TLS Bootstrap 证书签发

  • 查看kube-system命名空间服务的信息:kubectl -n kube-system get svc

在这里插入图片描述

  • 查看 metrics-server服务的信息:
kubectl describe -n kube-system svc metrics-server

在这里插入图片描述

  • 在各个节点修改kubelet的配置文件:vim /var/lib/kubelet/config.yaml

在这里插入图片描述

  • 重启服务:systemctl restart kubelet.service
  • 查看认证信息:kubectl get csr

在这里插入图片描述

  • 通过认证:kubectl certificate approve csr-hc59r csr-hhzld csr-rvtw7

在这里插入图片描述

  • 查看kube-system命名空间中pod的信息:kubectl get pod -n kube-system

在这里插入图片描述

  • 查看metrics-server服务的信息:kubectl describe -n kube-system svc metrics-server,Endpoints被分配到ip

在这里插入图片描述

(4)测试

  • 查看节点的cpu和内存资源:kubectl top node

在这里插入图片描述

  • 查看pod的资源使用情况:kubectl -n kube-system top pod

在这里插入图片描述

kubectl get --raw “/apis/metrics.k8s.io/v1beta1/nodes/server1”

在这里插入图片描述

3 Dashboard部署

Dashboard可以给用户提供一个可视化的 Web 界面来查看当前集群的各种信息。用户可以用 Kubernetes Dashboard 部署容器化的应用、监控应用的状态、执行故障排查任务以及管理 Kubernetes 各种资源

官网:https://github.com/kubernetes/dashboard

(1)下载部署文件:

wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
  • 将部署需要的镜像上传至私有仓库

在这里插入图片描述

在这里插入图片描述

(2)应用文件:kubectl apply -f recommended.yaml

  • 查看命名空间:kubectl get ns

在这里插入图片描述

  • 查看命名空间kubernetes-dashboard所有的信息:kubectl -n kubernetes-dashboard get all

在这里插入图片描述

  • 查看metallb-system命名空间pod的信息:kubectl -n metallb-system get pod

在这里插入图片描述

  • 查看kubernetes-dashboard 的服务信息:
kubectl -n kubernetes-dashboard  get svc

在这里插入图片描述

(3) 修改服务的类型:kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard,设置外部访问的ip

在这里插入图片描述

  • 查看kubernetes-dashboard服务的信息:kubectl -n kubernetes-dashboard get svc

在这里插入图片描述

  • 在浏览器页面测试

在这里插入图片描述
在这里插入图片描述

  • 查看kubernetes-dashboard 的sa信息:
kubectl -n kubernetes-dashboard describe sa kubernetes-dashboard

在这里插入图片描述

  • 查看kubernetes-dashboard-token-skbn6的token: kubectl -n kubernetes-dashboard describe secrets kubernetes-dashboard-token-skbn6

在这里插入图片描述

  • 在浏览器页面访问

在这里插入图片描述

  • 成功登陆页面,但是此时并没有查看资源的权限,默认dashboard对集群没有操作权限,需要授权

在这里插入图片描述
解决方案:给集群授权

  • 应用文件: kubectl apply -f rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: kubernetes-dashboard-admin
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard
  namespace: kubernetes-dashboard
  • 刷新页面,可以展示metrics-server的数据指标

在这里插入图片描述Dashboard如果无法展示metrics-server的数据指标,可以通过以下两种方式解决:

  • 修改dashboard-metrics-scraper 的Pod网络模式: hostNetwork: true
  • 通过node或pod的亲和性设置,让dashboard-metrics-scraper和metrics-server的Pod处于同一个node节点

在这里插入图片描述

  • 在图形化界面创建pod

在这里插入图片描述
在这里插入图片描述

  • pod创建成功

在这里插入图片描述

  • 在图形化界面删除pod

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: K8s Metrics Server是一个Kubernetes集群中的组件,用于收集和存储集群中各种资源的度量数据,例如CPU、内存、网络等。它可以提供实时的度量数据,帮助管理员和开发人员更好地了解集群的状态和性能,并进行优化和调整。 ### 回答2: k8s metrics-server是Kubernetes的一个组件,它被设计用于收集集群内的性能指标。这些指标包括容器和节点的CPU使用率、内存使用量、网络I/O等等。利用这些指标,可以更好的了解集群中的资源使用情况,从而做出相应的资源分配和优化决策。 在Kubernetes中,集群管理员经常需要监控集群内部每个节点和容器的性能情况,这是为了确保应用程序在正确的资源调度下正常运行。为了监控这些性能指标,需要使用一些工具来帮助收集、分析和存储指标数据。而k8s metrics-server正是为此而设计的。 k8s metrics-server采用的是轻量级的部署模式,可以轻松地在Kubernetes集群中进行安装和配置。它具有以下优点: 1.快速部署:k8s metrics-server非常轻量,可以非常快速地部署到Kubernetes集群中。 2.高效:k8s metrics-server具有高效的数据收集和存储能力,能够实时地监控和收集节点和容器的性能指标。 3.可扩展:k8s metrics-server可以轻松地扩展到集群的规模,以便于更好地适应性能监控的需求。 总之,k8s metrics-server是Kubernetes集群内必备的性能指标收集器,以便于运维和开发人员更好地了解集群的性能情况,保障应用程序的可靠性和高可用性。 ### 回答3: K8s Metrics Server是一个通过K8s的APIs来收集、聚合以及输出资源的使用情况的组件,主要用于扩展Kubernetes集群的监控及自动化调整容器资源。通过Metrics Server,用户可以查看当前K8s集群的完整资源使用情况,并能够在资源不足或者超量使用时自动调整容器资源。 K8s Metrics Server的基本原理是通过启动一个服务,并通过访问K8s各种组件的API endpoints来获取当前容器和集群资源使用状态。Metrics Server在收集到的数据中,主要包括CPU、memory以及network的使用率、请求流量、响应时间等信息。同时,可以基于这些数据来为Pods、Deployments、DaemonSets等对象提供水平自动扩容和增量调整的服务。 在K8s Metrics Server中,最重要的组件是Heapster,它作为Metrics Server的扩展组件,负责对收集到的所有的K8s集群的资源使用数据进行经过处理之后进行监控和分析。通过Heapster可以实现的监控和提醒,包括对Pods、Deployments、DaemonSets等对象的资源使用情况的监控,集群负荷的观察,容器状态的查询等。 总的来说,K8s Metrics Server是K8s设计的一个非常重要的组件,它能够帮助K8s构建一个可靠的、基于资源监控的自动化调整平台,为用户提供可靠、高效的容器资源调度服务。对于企业用户而言,K8s Metrics Server的使用不仅能够提升企业应用的稳定性和可靠性,也能够降低系统维护与调整的成本,提升效率和便捷性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值