如何在Debian上监控Kubernetes运行
在Debian系统上监控Kubernetes(K8s)集群,需结合命令行工具(快速排查)与可视化工具(全面监控)的组合。以下是具体方案及步骤:
命令行工具是运维人员的“瑞士军刀”,适合快速检查集群基础状态,无需额外安装复杂组件。
kubectl get nodes(显示节点名称、状态、角色等信息);kubectl get pods --all-namespaces(确认Pod是否Running/Completed/Failed);kubectl get services --all-namespaces(检查服务是否正常暴露);kubectl get deployments --all-namespaces(确认部署的副本数是否符合预期)。可视化工具能将集群指标转化为直观的图表,帮助快速识别性能瓶颈。以下是常用组合:
Prometheus:开源监控系统,专为云原生环境设计,支持动态发现Kubernetes资源(如节点、Pod),并收集CPU、内存、网络等指标。
# 添加Prometheus Helm仓库并更新
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 创建monitoring命名空间
kubectl create namespace monitoring
# 安装Prometheus Operator(包含Prometheus、Alertmanager、Grafana等组件)
helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring
monitoring命名空间的prometheus-kube-prometheus-stack-prometheus服务(端口9090),通过kubectl port-forward转发端口即可访问:kubectl port-forward svc/prometheus-kube-prometheus-stack-prometheus -n monitoring 9090:9090
浏览器访问http://<Debian-IP>:9090,输入up查询集群状态(值为1表示正常)。Grafana:开源可视化工具,与Prometheus无缝集成,提供丰富的Kubernetes仪表盘(如节点资源使用率、Pod状态、Deployment副本数)。
http://<Debian-IP>:3000,默认用户名/密码admin),点击“Configuration”→“Data Sources”,添加Prometheus(地址为http://prometheus-kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090)。1860、节点资源使用率编号193),即可查看预制的可视化图表。Kubernetes官方提供的Web界面,适合直观管理集群资源(如Pod、Deployment、Service),并能查看资源的基本指标(如CPU、内存使用量)。
kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
kubectl -n kube-system get svc kubernetes-dashboard;apiVersion: v1
kind: ServiceAccount
metadata:
name: dashboard-admin-sa
namespace: kube-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: dashboard-admin-sa
subjects:
- kind: ServiceAccount
name: dashboard-admin-sa
namespace: kube-system
roleRef:
kind: ClusterRole
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
应用配置:kubectl apply -f dashboard-admin.yaml;kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep dashboard-admin-sa | awk '{print $1}');kubectl proxy启动代理(kubectl proxy --port=8080),浏览器访问http://localhost:8080/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/,输入Token登录。cAdvisor(Container Advisor)是Kubernetes内置的容器资源监控工具,自动部署在每个节点上,收集容器的CPU、内存、网络、磁盘等指标。
8080端口(http://<Node-IP>:8080),查看容器级别的指标;或通过Prometheus配置抓取cAdvisor的指标(默认地址为<Node-IP>:8080/metrics)。kube-state-metrics监听Kubernetes API Server,生成集群资源对象的状态指标(如Pod的Running/Pending状态、Deployment的replicas数量、Node的Ready状态)。
kubectl apply -f https://github.com/kubernetes-sigs/kube-state-metrics/releases/latest/download/components.yaml
kube-state-metrics服务的8081端口(http://<Node-IP>:8081),查看指标(如kube_pod_status_phase表示Pod状态)。对于习惯使用终端的运维人员,终端工具能提供更便捷的集群管理体验。
K9s是一个基于终端的Kubernetes管理工具,提供全屏界面,支持查看Pod、Deployment、Service等资源的状态,以及执行常用命令(如logs、exec)。
/usr/local/bin:curl -LO "https://github.com/derailed/k9s/releases/latest/download/k9s_$(uname -s)_$(uname -m).tar.gz"
tar xzvf k9s_$(uname -s)_$(uname -m).tar.gz
sudo mv k9s /usr/local/bin
k9s命令,登录集群(默认使用~/.kube/config),通过快捷键(如l查看Logs、d查看Details)管理资源。dashboard-admin-sa)具有足够的权限(如cluster-admin),避免权限不足导致无法访问资源。kubectl port-forward或Ingress限制访问(如仅允许内网IP访问),避免暴露在公网;Kubernetes Dashboard应使用Token或OAuth认证,避免未授权访问。