kubernetes(k8s) 学习 (十六) Metrics-Server+Dashboard实现资源监控

Metrics-Server简介

Metrics-Server是集群核心监控数据的聚合器,用来替换之前的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/<node-name>
http://127.0.0.1:8001/apis/metrics.k8s.io/v1beta1/namespace/<namespace-name>/pods/<pod-name>

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部署

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

$ git clone https://github.com/kubernetes-incubator/metrics-server
$ cd metrics-server
$ kubectl apply -f deploy/kubernetes

部署后还有不少坑需要填

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
开始填坑

部署后查看Metrics-server的Pod日志:

错误1:dial tcp: lookup server2 on 10.96.0.10:53: no such host

这是因为没有内网的DNS服务器,所以metrics-server无法解析节点名字。可以直接修改coredns的configmap,讲各个节点的主机名加入到hosts中,这样所有Pod都可以从CoreDNS中解析各个节点的名字

$ kubectl edit configmap coredns -n kube-system
apiVersion: v1
data:
  Corefile: |
    ...
        ready
        hosts {
           172.25.0.11 server1
           172.25.0.12 server2
           172.25.0.13 server3
           fallthrough
        }
        kubernetes cluster.local in-addr.arpa ip6.arpa {

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
第二个坑,证书问题

报错2:x509: certificate signed by unknown authority

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

启用TLS Bootstrap 证书签发

# vim /var/lib/kubelet/config.yaml 	
...
serverTLSBootstrap: true

# systemctl  restart kubelet

$ kubectl get csr
NAME        AGE     REQUESTOR                     CONDITION
csr-f29hk   5s      system:node:node-standard-2   Pending
csr-n9pvr   3m31s   system:node:node-standard-3   Pending

$ kubectl certificate approve csr-n9pvr
certificatesigningrequest.certificates.k8s.io/csr-n9pvr approved

在这里插入图片描述在这里插入图片描述在每个节点都需要操作.

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在后端节点ser3上
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在ser4上
在这里插入图片描述在这里插入图片描述在这里插入图片描述
在ser2上对ser3和ser4证书进行批准
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述此时部署已经成功
在这里插入图片描述在这里插入图片描述
有的版本不需要填这个坑

报错3: Error from server (ServiceUnavailable): the server is currently unable to handle the request (get nodes.metrics.k8s.io)
如果metrics-server正常启动,没有错误,应该就是网络问题。修改metrics-server的Pod 网络模式:

hostNetwork: true

在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述配置epel源,用于下载软件。
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

Dashboard实现图形化界面部署

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

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

下载部署文件

$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.0-rc5/aio/deploy/recommended.yaml

$ kubectl  -n kubernetes-dashboard get svc
NAME                        TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)         AGE
dashboard-metrics-scraper   ClusterIP   10.105.135.64    <none>        8000/TCP        77m
kubernetes-dashboard        NodePort    10.110.102.158   <none>        443:32406/TCP   77m
修改为NodePort方式,以便外部访问。

实际操作:

1.将镜像下载在harbor仓库中
在这里插入图片描述在这里插入图片描述该文件是从网上下载的
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

获取token

在这里插入图片描述

在这里插入图片描述找到sname
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
将token直接放进去
在这里插入图片描述发现右上角的很多报错
在这里插入图片描述在这里插入图片描述因为没有授权

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

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

1.这里的sa已经有了,我们不需要再创建了
在这里插入图片描述2.在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述再进去时,一切正常
在这里插入图片描述在这里插入图片描述该web界面不仅可以实现监控,还可以实现部署pod

在这里插入图片描述在这里插入图片描述在这里插入图片描述pod nginx创建成功
在这里插入图片描述在这里插入图片描述

拉伸pod数量
在这里插入图片描述在这里插入图片描述在这里插入图片描述
测试删除刚刚的pod
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述
注意:
Dashboard如果无法展示metrics-server的数据指标,可以通过以下两种方式解决:

修改dashboard-metrics-scraper 的Pod网络模式: hostNetwork: true 

通过node或pod的亲和性设置,让dashboard-metrics-scraper和
metrics-server的Pod处于同一个node节点。

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值