kubernetes学习-使用metrics-server监控集群资源和查看日志
一 、简介
Metrics Server 是一个用于 Kubernetes 集群的监控工具,它用于收集、存储和提供关于集群中各种资源的度量数据。Metrics Server 是 Kubernetes 中一个核心的指标收集器,可以提供关于 CPU 和内存使用情况、节点资源利用率以及其他重要指标的信息。它主要用于水平自动扩展(Horizontal Pod Autoscaling,HPA)和 Kubernetes Dashboard 等 Kubernetes 组件的正常运行。
Metrics Server 通过轮询 Kubernetes API 服务器来获取有关容器、节点和集群级别资源使用情况的数据。然后,它将这些数据存储在内存中,并在请求时返回给用户或其他 Kubernetes 组件。Metrics Server 不存储历史数据,因此它主要用于实时监控和自动化任务。
Metrics Server 的工作原理是通过在每个节点上运行的 kubelet 组件定期收集容器和节点级别的度量数据,并将其暴露给 Metrics Server。Metrics Server 将这些数据聚合并提供给 Kubernetes API 服务器,以便用户可以使用 kubectl 或其他工具查询集群的资源使用情况。
Metrics Server 是 Kubernetes 的一个重要组件,特别是在需要进行自动扩展或监控集群资源使用情况时。它可以帮助管理员和开发人员更好地了解其集群的运行状况,并且可以根据实时数据进行自动化操作。
二、应用场景
有了Metrics Server,你可以实现以下功能:
- 水平自动扩缩(Horizontal Pod Autoscaler, HPA):根据实际资源使用情况自动增加或减少Pod的数量。
- 资源调度优化:更好的了解每个工作负载的需求,从而更有效地分配资源。 性能监控:定期检查集群性能,确保服务稳定运行。
- 故障排查:快速定位资源瓶颈,帮助解决性能问题。
特点
- 轻量级:Metrics Server不需要额外安装代理或者守护进程,降低了系统的复杂性。
- 高效:实时更新,提供近乎实时的度量数据。
- 可扩展:可以与其他监控工具(如Prometheus、Grafana)集成,丰富监控场景。
- 社区活跃:由Kubernetes Incubator维护,拥有丰富的文档和支持。
三、部署
官方部署文档
下载components.yaml文件到本地
~]# wget https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
修改yaml文件,在文件中添加上–kubelet-insecure-tls
部署
~]# kubectl apply -f components.yaml
~]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system calico-kube-controllers-cd8566cf-ljnnf 1/1 Running 3 (95m ago) 100m
kube-system calico-node-bhpwv 1/1 Running 0 100m
kube-system calico-node-sn6vw 1/1 Running 0 100m
kube-system calico-node-vdcz7 1/1 Running 0 100m
kube-system coredns-6d8c4cb4d-kh4md 1/1 Running 2 (138m ago) 4h31m
kube-system coredns-6d8c4cb4d-qw6hc 1/1 Running 2 (138m ago) 4h31m
kube-system etcd-master 1/1 Running 10 (138m ago) 4h31m
kube-system kube-apiserver-master 1/1 Running 9 (138m ago) 4h31m
kube-system kube-controller-manager-master 1/1 Running 12 (138m ago) 4h31m
kube-system kube-proxy-7sc8n 1/1 Running 6 (146m ago) 4h27m
kube-system kube-proxy-7v7rb 1/1 Running 2 (138m ago) 4h31m
kube-system kube-proxy-fjfjd 1/1 Running 2 (140m ago) 4h28m
kube-system kube-scheduler-master 1/1 Running 11 (138m ago) 4h31m
kube-system metrics-server-c59bb7d44-7q6mv 1/1 Running 0 68s
查看资源占用命令
~]# kubectl top node # 查看节点资源占用情况
NAME CPU(cores) CPU% MEMORY(bytes) MEMORY%
master 160m 8% 1715Mi 62%
node-01 63m 6% 947Mi 55%
node-02 64m 6% 900Mi 52%
~]# kubectl top pod -A # 查看pod占用资源情况
NAMESPACE NAME CPU(cores) MEMORY(bytes)
kube-system calico-kube-controllers-cd8566cf-ljnnf 1m 22Mi
kube-system calico-node-bhpwv 19m 79Mi
kube-system calico-node-sn6vw 21m 78Mi
kube-system calico-node-vdcz7 20m 74Mi
kube-system coredns-6d8c4cb4d-kh4md 1m 12Mi
kube-system coredns-6d8c4cb4d-qw6hc 1m 15Mi
kube-system etcd-master 8m 65Mi
kube-system kube-apiserver-master 32m 317Mi
kube-system kube-controller-manager-master 8m 50Mi
kube-system kube-proxy-7sc8n 1m 8Mi
kube-system kube-proxy-7v7rb 1m 13Mi
kube-system kube-proxy-fjfjd 1m 14Mi
kube-system kube-scheduler-master 2m 19Mi
kube-system metrics-server-c59bb7d44-7q6mv 2m 13Mi
kubernetes-dashboard dashboard-metrics-scraper-799d786dbf-684mg 1m 7Mi
kubernetes-dashboard kubernetes-dashboard-6b6b86c4c5-s7xmd 1m 19Mi
如果无法联网下载镜像,也可以使用我上传的资源metrics-server下载
四、查看日志
查看pod中容器日志
命令:kubectl logs {pod名称} -n {命名空间名称} -f
查看kebelet日志
命令: journalctl -u kebelet -f
容器终端中查看日志
命令:kubectl exec -it {pod名称} – bash # 进入容器内
标准输出在宿主机的路径
/var/lib/docker/containers/{容器ID}/{容器ID}-json.log