环境

win10系统,开启了WSL2
docker for windows,开启了WSL集成
minikube for windows
kubectl for windows

缘由

kubectl top po 查看pod的资源使用情况时报错:

error: Metrics not available for pod

解决方案

在metrics-server的启动参数里添加以下两个命令:

--kubelet-insecure-tls
--kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

但是 minikube addons enable metrics-server 启动的metrics-server版本是v0.2.1,这个版本没有上述两个启动命令。所以我们选择手动部署metrics-server。

先关闭minikube的metrics-server:

minikube addons disable metrics-server

下载metrics-server官方提供的yaml配置:

wget https://github/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

修改配置文件的image为国内源,否则拉取不到镜像:
将配置文件里的:

image: k8s.gcr.io/metrics-server-amd64:v0.3.6

修改为:

image: registry-hangzhou.aliyuncs/google_containers/metrics-server-amd64:v0.3.6

接着加入metrics-server的启动args:

args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP

再运行:

kubectl apply -f components.yaml

启动成功后就可以看到pods的资源使用情况啦~~~

kubectl top po -n kube-system
# outputs:
NAME                               CPU(cores)   MEMORY(bytes)
coredns-6c76c8bb89-2gdql           4m           12Mi
etcd-minikube                      25m          32Mi
kube-apiserver-minikube            67m          291Mi
kube-controller-manager-minikube   21m          46Mi
kube-proxy-mwvbk                   8m           19Mi
kube-scheduler-minikube            3m           19Mi
metrics-server-666566b66d-kzdc4    1m           13Mi
storage-provisioner                2m           14Mi
kubectl top po -n default
# outputs:
NAME                     CPU(cores)   MEMORY(bytes)
nginx-6586c878b5-2pmdx   1m           3Mi
nginx-6586c878b5-7kf5s   1m           3Mi

备注:貌似运行一段时间后,kubectl top po -n default又会失败。。

更多推荐

error: Metrics not available for pod 解决方案