Debian上Kubernetes集群状态监控实操指南
一 基础命令行巡检
- 节点与组件健康
- 查看节点状态:kubectl get nodes(关注 STATUS=Ready)
- 查看系统组件:kubectl get componentstatuses(或 kubectl get cs)
- 查看所有命名空间资源概况:kubectl get pods,svc,deployments,daemonsets,statefulsets,events --all-namespaces
- 查看事件(定位调度失败、镜像拉取失败等):kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp
- 资源与事件详情
- 查看对象详情:kubectl describe pod -n 、kubectl describe node
- 实时查看日志:kubectl logs -f -n [-c ]
- 资源用量(需集群已部署 Metrics Server)
- 节点与Pod资源:kubectl top nodes、kubectl top pods --all-namespaces
- 终端可视化工具
- K9s:快速查看资源、日志、进入容器,适合日常值守与排障
二 指标监控与可视化
- 前置条件
- 部署 Metrics Server(为 kubectl top 与 HPA 提供数据)
- 安装:kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
- 验证:kubectl get pods -n kube-system | grep metrics-server 与 kubectl top nodes
- Prometheus + Grafana(生产推荐)
- 部署 kube-prometheus-stack
- Helm 安装:
- helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- helm repo update
- kubectl create ns monitoring
- helm install kube-prometheus-stack prometheus-community/kube-prometheus-stack -n monitoring
- 访问验证
- Prometheus:kubectl port-forward svc/prometheus-kube-prometheus-stack-prometheus -n monitoring 9090:9090,浏览器访问 http://:9090,查询 up(值为 1 表示目标可达)
- Grafana:kubectl port-forward svc/prometheus-kube-prometheus-stack-grafana -n monitoring 3000:3000,默认账号 admin/admin;添加数据源 Prometheus(地址 http://prometheus-kube-prometheus-stack-prometheus.monitoring.svc.cluster.local:9090),导入仪表盘(如 Kubernetes Cluster Monitoring 等官方/社区仪表盘)
- 组件说明
- cAdvisor:内置于 kubelet,采集容器 CPU/内存/网络/磁盘;默认指标路径 /metrics
- node-exporter:节点级指标(CPU、内存、磁盘、文件系统、网络等)
- kube-state-metrics:监听 API Server,生成 Deployment/Pod/Node 等对象状态指标(如 kube_pod_status_phase)
三 可视化与日志补充
- Kubernetes Dashboard(Web 管理/查看)
- 安装:kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.7.0/aio/deploy/recommended.yaml
- 访问:启动代理 kubectl proxy --port=8080,浏览器访问 http://localhost:8080/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/
- 认证:创建 ServiceAccount 并绑定 cluster-admin,获取 Token 登录(最小权限原则)
- 日志方案(与指标互补)
- EFK(Elasticsearch + Fluentd + Kibana):集中存储与检索容器/节点日志
- Loki + Promtail + Grafana:轻量日志聚合,与 Grafana 统一查询体验
四 快速排障与日常巡检清单
- 快速定位路径
- 节点异常:先看 kubectl get nodes → kubectl describe node → 检查 kubelet 与 容器运行时 状态/日志
- Pod 异常:先看 kubectl get pods -n -o wide → kubectl describe pod -n → kubectl logs -f -n
- 资源瓶颈:用 kubectl top nodes/pods 与 Grafana 面板确认 CPU/内存/磁盘压力
- 控制面异常:查看 kubectl get cs、组件 Pod 日志(如 kube-apiserver、kube-controller-manager、kube-scheduler、etcd)
- 日常巡检命令清单
- 集群概况:kubectl get nodes,ns
- 工作负载:kubectl get pods,svc,deploy,ds,sts --all-namespaces
- 事件与告警:kubectl get events --all-namespaces --sort-by=.metadata.creationTimestamp
- 资源用量:kubectl top nodes、kubectl top pods --all-namespaces
- 控制面健康:kubectl get cs 与关键组件 Pod 状态/日志
五 安全与维护要点
- 访问控制
- Prometheus/Grafana/Dashboard 建议通过 kubectl port-forward 或 Ingress 限制访问;Dashboard 使用 Token/OAuth,遵循最小权限(RBAC)
- 组件版本与兼容
- Helm Chart/YAML 与 Kubernetes 版本保持兼容;升级前备份与灰度验证
- 系统与安全
- 保持 Debian 与基础组件安全更新;Kubernetes 组件按官方渠道升级;证书与密钥定期轮换
- 备份与恢复
- 定期备份 etcd(如 etcdctl snapshot save),并验证可恢复性;关键 ConfigMap/Secret/Deployment 纳入版本化管理