问题
当完成安装minikube并启动集群后,如果我们直接使用kubectl top命令去查看node的资源信息,会提示metrics-server服务不可用。
1 | kubectl top node |

解决方法
通常情况下,minikube是不自带metrics-server的,需要手动安装。
Step 1: 查看metrics-server的Pod是否存在
1 | kubectl get pods -n kube-system |
执行完这个命令后发现没有metrics-server的Pod存在。

Step 2: 安装metrics-server
执行下面命令安装metrics-server组件:
1 | kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml |
安装完成后,执行kubectl top node命令,仍然提示Metrics API not available。 通过以下命令查看metrics-server的deployment状态:
1 | kubectl -n kube-system get deployment metrics-server |
READY状态为0/1,表示metrics-server组件未正常运行。

通过以下命令查看metrics-server的log日志信息
1 | kubectl -n kube-system logs deployment/metrics-server |

服务器日志中显示metrics-server组件启动失败,原因是failed to verify certificate。这种情况下,我们可以更改metrics-server组件的启动参数,添加--kubelet-insecure-tls参数,以跳过证书验证。将下面的command参数添加到metrics-server的Deployment中:
1 | command: |
运行以下命令将metrics-server的component.yaml文件下载下来然后添加上面的参数.
1 | curl -L https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml -o components.yaml |
编辑components.yaml文件,找到metrics-server的Deployment部分,添加上面的参数。
1 | apiVersion: apps/v1 |
保存文件,然后运行以下命令安装metrics-server组件。
1 | kubectl apply -f components.yaml |
Step 3: Stop minikube
安装完metrics-server组件后,需要停止minikube集群。
1 | minikube stop |
Step 4: Start minikube
启动minikube集群。
1 | minikube start |
Step 5: 检查 metrics-server的状态
执行kubectl top node命令,查看node的资源信息。可以看到这次就运行正常了。
1 | kubectl top node |

总结
minikube默认情况下是不自带metrics-server组件的,需要手动安装。安装完成后,需要停止minikube集群,然后启动集群,才能正常使用kubectl top命令查看node的资源信息。