搭建好k8s集群后(如何搭建k8s集群),首先想到的是查看集群的运行情况
[root@k8s-master ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master Ready master 7d1h v1.16.3
k8s-n1 Ready <none> 7d v1.16.3
k8s-n2 Ready <none> 5d19h v1.16.3
k8s-n3 Ready <none> 5d18h v1.16.3
很好,所有节点都是ready状态。
如果想要查看个节点甚至pod的资源使用情况呢,这时候需要为集群安装metrics-server。
安装办法也很简单,参考GitHub
执行安装命令如下:
git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server
kubectl apply -f deploy/1.8+/
apply之后,metrics server 还不能很好的工作,主要发现了以下两个问题:
一是镜像“k8s.gcr.io/metrics-server-amd64:v0.3.6”在国内无法拉取。
二是kubelet使用了未被认可的证书,不能被metrics-server所调用。
第一个问题的解决办法,还是使用安装集群时候的老办法,先从国内镜像库中拉取,再打上tag(搭建k8s集群的文章中有提到)。这里面有地方要注意一下,就是“metrics-server-service.yaml”文件中拉取镜像是策略是“Always”,这里需要改成“IfNotPresent”。
第二个问题的解决办法有两种,一种是给kubelet指定“被认可”的证书,另一种比较简单粗暴,是直接跳过kubelet证书检查,这里选择第二种办法。
具体操作流程:
- 拉取“k8s.gcr.io/metrics-server-amd64:v0.3.6”。
- 修改metrics-server的deployment
kubectl edit deploy -n kube-system metrics-server
将“Always”改成“IfNotPresent”,添加 --kubelet-insecure-tls参数,来跳过kubelet证书检查。如下图,之后保存退出即可。
最后,执行kubectl top命令
[root@k8s-master ~]# kubectl top nodes
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
k8s-master 150m 7% 1517Mi 41%
k8s-n1 38m 3% 1023Mi 59%
k8s-n2 61m 6% 2094Mi 56%
k8s-n3 47m 4% 840Mi 22%
返回结果,安装成功。