问题
当完成安装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的资源信息。