文章目录

  • 一、Metrics-Server
  • 1.Metrics-Server部署
  • 2.测试
  • 二、Dashboard部署:可视化
  • 1.部署
  • 2.访问
  • 3.获取token
  • 4.通过web操作集群
  • 5.补充:



一、Metrics-Server

k8s中文官网:https://kubernetes.io/zh-cn/docs/reference/kubernetes-api/ gitee官网:https://gitee.com/

1.Metrics-Server部署

  • Metrics-Server是集群核心监控数据(cpu、内存)的聚合器,用来替换之前的heapster。
  • 容器相关的 Metrics 主要来自于 kubelet 内置的 cAdvisor 服务,有了Metrics-Server之后,用户就可以通过标准的 Kubernetes API 来访问到这些监控数据。
    Metrics API 只可以查询当前的度量数据,并不保存历史数据
    Metrics API URI 为 /apis/metrics.k8s.io/,在 k8s.io/metrics 维护。
    必须部署 metrics-server 才能使用该 API,metrics-server 通过调用 Kubelet Summary API 获取数据。
  • 示例:
    http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/nodes/
    http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespace//pods/
  • 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等组件来完成。
    资源下载:https://github.com/kubernetes-incubator/metrics-server
  • Metrics-server部署:
    $ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

 

k8s监控接口调用量 k8s监控指标_k8s监控接口调用量


k8s监控接口调用量 k8s监控指标_Server_02


k8s监控接口调用量 k8s监控指标_docker_03


必须走tls,按照下图设置即可:所有节点的kubelet-config

启动节点的自签名证书

k8s监控接口调用量 k8s监控指标_kubernetes_04


下载部署文件

[root@k8s2 ~]# mkdir metrics

[root@k8s2 ~]# cd metrics

[root@k8s2 metrics]# wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

目录中修改部署文件

k8s监控接口调用量 k8s监控指标_docker_05


上传镜像到harbor,确保有对应的镜像

拉取镜像

[root@k8s1 harbor]# docker pull bitnami/metrics-server:0.6.2

[root@k8s1 harbor]# docker tag bitnami/metrics-server:0.6.2 reg.westos.org/library/metrics-server:0.6.2

[root@k8s1 harbor]# docker push reg.westos.org/library/metrics-server:0.6.2

k8s监控接口调用量 k8s监控指标_docker_06


[root@k8s2 metrics]# kubectl apply -f components.yaml

k8s监控接口调用量 k8s监控指标_kubernetes_07


注意:以前版本会有各种坑出现,以后也许会出现

2.测试

如有问题,可以查看日志

[root@k8s2 metrics]# kubectl -n kube-system logs metrics-server-5f5599576c-lbqgm

k8s监控接口调用量 k8s监控指标_Server_08


CPU排序:

k8s监控接口调用量 k8s监控指标_k8s监控接口调用量_09

二、Dashboard部署:可视化

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

 

k8s监控接口调用量 k8s监控指标_k8s监控接口调用量_10


k8s监控接口调用量 k8s监控指标_k8s监控接口调用量_11

1.部署

下载部署文件

[root@k8s2 ~]# mkdir dashboard

[root@k8s2 ~]# cd dashboard

[root@k8s2 dashboard]# wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml

上传所需镜像到harbor:直接拉取即可

k8s监控接口调用量 k8s监控指标_kubernetes_12


部署:直接启用即可

[root@k8s2 dashboard]# kubectl apply -f recommended.yaml修改svc

注意:集群需要部署metallb-system,如果没有可以使用NodePort方式,访问ip+端口即可

clusertIP只能在集群内访问,所以改为loadbalancer或者NodePort

暴露ip,给集群外访问:

[root@k8s2 dashboard]# kubectl -n kubernetes-dashboard edit svc kubernetes-dashboard

k8s监控接口调用量 k8s监控指标_Server_13


k8s监控接口调用量 k8s监控指标_Server_14

2.访问

访问:https://192.168.56.101

提供两种方式:token和证书方式

k8s监控接口调用量 k8s监控指标_k8s监控接口调用量_15


默认dashboard对集群没有操作授权,需要授权

授权
[root@k8s2 dashboard]# vim rbac.yaml
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: admin-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin                          ##集群管理员角色,内置的4种之一
subjects:
- kind: ServiceAccount
  name: kubernetes-dashboard                       ##绑定
  namespace: kubernetes-dashboard

[root@k8s2 dashboard]# kubectl apply -f rbac.yaml        ##如果不开启,功能很少

3.获取token

[root@k8s2 dashboard]# kubectl -n kubernetes-dashboard create token kubernetes-dashboard

k8s监控接口调用量 k8s监控指标_k8s监控接口调用量_16

4.通过web操作集群

使用token登录网页

k8s监控接口调用量 k8s监控指标_Server_17

5.补充:

Dashboard如果无法展示metrics-server的数据指标,可以通过以下两种方式解决:
1.修改dashboard-metrics-scraper 的Pod网络模式: hostNetwork: true
2.通过node或pod的亲和性设置,让dashboard-metrics-scraper和metrics-server的Pod处于同一个node节点。