TKE上部署metrics-server
kubectl top 是基础命令,但是需要部署配套的组件才能获取到监控值
1.8以下:部署 heapter
1.8以上:部署 metric-server
下面我们来在TKE上配置下1.8版本以上的metric-server
获取metric-server的部署yaml
登录能执行kubectl命令的客户端机器,执行下面命令下载
# git clone https://github.com/kubernetes-incubator/metrics-server
# cd metrics-server/manifests/base
[root@VM_0_13_centos base]# ll
total 24
-rw-r--r-- 1 root root 298 Jul 8 11:57 apiservice.yaml
-rw-r--r-- 1 root root 1386 Aug 13 10:35 deployment.yaml
-rw-r--r-- 1 root root 158 Jul 8 11:57 kustomization.yaml
-rw-r--r-- 1 root root 239 Jul 8 11:57 pdb.yaml
-rw-r--r-- 1 root root 1714 Jul 8 11:57 rbac.yaml
-rw-r--r-- 1 root root 297 Jul 8 11:57 service.yaml修改yaml文件参数
修改对应的metrics-server-deployment.yaml文件,需要改镜像源,国外的镜像需要科学上网下载,还需要添加如下参数
command: - /metrics-server - --kubelet-preferred-address-types=InternalIP - --kubelet-insecure-tls
不添加参数报错,metrics-server 启动提示no metrics known for pod?
首先需要知道的是metrics-server默认会使用hostname 来进行通讯。
如果没有进行相应配置的话,那么通过hostname是无法正常通讯的。
所以使用默认命令行启动,由于无法正常通过hostname通信就会产生错误, 从而提示no metrics known for pod
实际上metrics-server不只支持通过hostname进行通讯,还支持使用IP来进行通讯,只不过需要显式指定命令行参数:
--kubelet-preferred-address-types=InternalIP
其中InternalIP可以修改为以下值:
InternalIP,Hostname,InternalDNS,ExternalDNS,ExternalIP (具体含义这里就不展开了,感兴趣的可以自行了解。)
但是呢,事情到这里还没有结束,当你加上命令行参数后,会发现出现另一个错误x509: cannot validate certificate。
这是由于证书验证不通过导致的,所以我们需要让metrics-server忽略掉证书错误。而忽略证书错误也是有命令行支持的,我们添加如下命令行参数就可以解决了:
--kubelet-insecure-tls
修改后的yaml如下:
执行apply部署对应的yaml文件
我们在对应的部署目录文件中发现有一个kustomization.yaml,这个文件的作用可以先了解下kustomize这个项目。
kustomize是sig-cli的一个子项目,它的设计目的是给kubernetes的用户提供一种可以重复使用同一套配置的声明式应用管理,从而在配置工作中用户只需要管理和维护kubernetes的API对象,而不需要学习或安装其它的配置管理工具,也不需要通过复制粘贴来得到新的环境的配置。
我们这里不做kustomize的部署,所以后续不需要applykustomization.yaml这个yaml。
我们这里直接部署目录下的所有yaml文件,有一个报错不用管,是因为我们没安装kustomize。
验证和执行命令查看pod和node的内存及cpu指标
这边metrics-server运行正常后,执行命令是可以正常查看node和pod的性能指标的
最后更新于
这有帮助吗?