在 Debian 上监控 Kubernetes 状态
一 命令行快速巡检
- 检查集群连通性与组件状态
- 查看集群信息:kubectl cluster-info
- 查看节点:kubectl get nodes
- 查看所有命名空间的 Pod:kubectl get pods --all-namespaces
- 查看 Deployments:kubectl get deployments --all-namespaces
- 查看 Services:kubectl get services --all-namespaces
- 查看事件(定位异常与调度问题):kubectl get events --all-namespaces
- 查看控制面组件日志(在控制面节点执行)
- kubelet:sudo journalctl -u kubelet -f
- kube-proxy:sudo journalctl -u kube-proxy -f
- 查看 systemd 服务状态
- kubelet:sudo systemctl status kubelet
- kube-proxy:sudo systemctl status kube-proxy
- 查看工作负载详情
- 查看部署详情:kubectl describe deployment
- 查看 Pod 详情:kubectl describe pod
二 可视化与终端 UI
- Kubernetes Dashboard(Web UI)
- 部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.4.0/aio/deploy/recommended.yaml
- 本地访问:kubectl proxy,浏览器打开 http://localhost:8001/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/
- 获取登录令牌(示例创建管理员用户):
- 创建 ServiceAccount 与 ClusterRoleBinding:
- kubectl create serviceaccount dashboard-admin -n kubernetes-dashboard
- kubectl create clusterrolebinding dashboard-admin-binding --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:dashboard-admin
- 获取 Token:kubectl -n kubernetes-dashboard create token dashboard-admin
- K9s(终端全屏 UI)
- 安装:下载解压后将二进制放入 /usr/local/bin/k9s
- 使用:k9s 进入交互界面,便捷查看节点、Pod、日志与事件
三 指标监控与可视化
- Prometheus + Grafana(推荐)
- 使用 Helm 一键部署监控栈(包含 Operator 与内置仪表板):
- 添加仓库:helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- 安装:helm install prometheus prometheus-community/kube-prometheus-stack
- 访问 Grafana:默认 3000 端口,使用 admin 用户登录,数据源选择 Prometheus,导入 Kubernetes 相关仪表板
- 节点与容器基础指标
- cAdvisor 已内置于 kubelet,默认暴露 8080 端口,可用于查看节点与容器的 CPU、内存、文件系统、网络 等基础指标(通常与 kubelet 同机部署)
四 快速排障清单
- 节点与 Pod 状态异常
- 看节点:kubectl get nodes(关注 STATUS=NotReady)
- 看 Pod:kubectl get pods -A(关注 STATUS=CrashLoopBackOff/Pending/Error)
- 查事件:kubectl get events -A --sort-by=.metadata.creationTimestamp
- 查详情:kubectl describe pod / kubectl describe node
- 控制面组件异常
- 查日志:sudo journalctl -u kubelet -f、sudo journalctl -u kube-proxy -f
- 查服务:sudo systemctl status kubelet、sudo systemctl status kube-proxy
- 访问 Dashboard 失败
- 确认已执行 kubectl proxy,并使用 Token 登录;如需远程访问,考虑 NodePort/Ingress 暴露或安全的端口转发