当前位置:   article > 正文

kubectl top命令报错:Metrics API not available_kubectl top node error: metrics api not available

kubectl top node error: metrics api not available

在没有完善k8s监控体系的情况下,基于k8s集群查看node节点的运行情况。于是想到命令:

$ kubectl top node
$ kubectl top pod
  • 1
  • 2

这两个命令会直接报错"Metrics API not available",这是什么原因呢?如何解决?

解决:

原因:

因为默认情况下k8s集群只提供了收集数据的模块–kubelet中的cadvisor。它类似于zabbix的agent代理程序,用来收集被监控节点的数据信息。

但是k8s集群却没有提供zabbix-server端,没有监控收集端,这时候我们需要自己安装server镜像。这个文件就是metrice-server程序。

在这里插入图片描述
因此,我们只需要安装一个Metrics-server端,就可以提供监控的API接口了。

解决方法

监控端的项目在github上,地址为:https://github.com/kubernetes-sigs/metrics-server

通过提示,我们可以使用下面的命令下载yaml文件,来安装Metrics-server端。命令如下:

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  • 1

需要注意的问题

1、默认的yaml文件提供的为外网地址,我们没有VPN是访问不到的。因此,我们需要修改指定的镜像,这里我给大家提供一个docker hub上的镜像地址。

image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.1
  • 1

2、默认service端和cadvisor端是通过https的证书进行通信的,这时候我们要忽略这个配置。

args:
 - --cert-dir=/tmp
 - --secure-port=4443
 - --kubelet-insecure-tls  # 添加这一行
 - --kubelet-preferred-address-types=InternalIP
  • 1
  • 2
  • 3
  • 4
  • 5

运行文件

最后,我们有了yaml文件后,执行这个文件就可以了。

$ kubectl apply -f components.yaml
  • 1

metrice-server运行正常后,运行kubectl top pod,出现“Error from server (ServiceUnavailable): the server is currently unable to handle the request (get pods.metrics.k8s.io)”

解决方法:新增hostNetwork: true到components.yaml
参考地址:https://stackoverflow.com/questions/53811388/error-from-server-serviceunavailable-the-server-is-currently-unable-to-handle

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    k8s-app: metrics-server
  name: metrics-server
  namespace: kube-system
spec:
  selector:
    matchLabels:
      k8s-app: metrics-server
  strategy:
    rollingUpdate:
      maxUnavailable: 0
  template:
    metadata:
      labels:
        k8s-app: metrics-server
    spec:
      hostNetwork: true   #新增
      containers:
      - args:
        - --cert-dir=/tmp
        - --secure-port=4443
        - --kubelet-insecure-tls
        - --kubelet-preferred-address-types=InternalIP,ExternalIP,Hostname
        - --kubelet-use-node-status-port
        - --metric-resolution=15s
        image: registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server:v0.6.1
        imagePullPolicy: IfNotPresent
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/536358
推荐阅读
相关标签
  

闽ICP备14008679号