了解 Metrics 之前先了解 kubectl 自带的一个 top
命令,它是显示资源利用率的,包括 cpu,内存和存储。
通过 kubectl top --help
了解到 top
命令有两个子命令,支持 pod 和 node 这两个维度去查看。
当我们使用 kubectl top node
和 kubectl top pod
命令时报错:
其实这个原因是 top
命令是需要调用一个资源的,该资源恰好提供了 cpu 或者内存的信息,而提供这个资源的就是报错信息中所提到的 heapster
,这个 heapster
是一个 k8s 早期的监控组件,为 top 提供数据来源,之后这个组件被完全弃用,官方社区研发了一个新的组件来替换它,替代者就是 Metrics-server
,它的功能就是一个聚合器,Metrics-server
并不直接采集 cpu 等监控数据,它是从 cadvisor
组件中去聚合响应的监控数据,cadvisor
已经内置到 k8s agent 中了,所以我们只需要安装 Metrics-server
即可
部署方式
# 下载所需文件
git clone https://github.com/kubernetes-incubator/metrics-server
cd metrics-server/deploy/kubernetes
# 编辑替换源地址并添加参数
vi metrics-server-deployment.yaml
# 修改镜像地址并添加最后两行参数
···
containers:
- name: metrics-server
image: lizhenliang/metrics-server-amd64:v0.3.1
imagePullPolicy: IfNotPresent
args:
- --cert-dir=/tmp
- --secure-port=4443
- --kubelet-insecure-tls
- --kubelet-preferred-address-types=InternalIP
···
# 应用所有 yaml文件
kubectl apply -f .
# 查看metrics-server状态
kubectl get pod -n kube-system
# 查看metrics-server是否注册到apiservice中
kubectl get apiservice
添加参数说明:
--kubelet-insecure-tls
:让 metrics-server 以非 https 安全方式连接 kubectl--kubelet-preferred-address-types
:让 metrics-server 不用主机名而使用节点实际的 IP 地址连接 kubelet
若网络访问慢,也可直接下载本站压缩包,点击下载
wget https://leif.fun/downloads/kubernetes/metrics-server.zip
unzip metrics-server.zip
cd metrics-server
kubectl apply -f .
文件功能介绍:
metrics-server-deployment.yaml
:部署 metrics 服务metrics-server-service.yaml
:暴露 metrics 服务metrics-apiservice.yaml
:把 metrics 服务注册到 k8s 的 api 中- 其他文件:授权访问
接下来就可以正常使用 top 命令查看资源状态了
注意:1000m=1c
总结
监控流程:kubectl top
-> apiserver
-> metrics-server pod
-> kubectl(cadvisor)
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于