监控与备份
约 657 字大约 2 分钟
布欧-Lewyon
2026-05-15
首页 › K8s › 运维与监控(在新窗口打开) › 监控与备份
Metrics Server
# 安装
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
# 使用
kubectl top nodes
kubectl top pods
kubectl top pods --all-namespaceskubectl top 提供集群资源消耗的快照视图,是 HPA 的数据来源。
Prometheus + Grafana
# 使用 Helm 安装 Prometheus Stack
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 安装 kube-prometheus-stack(包含 Prometheus + Grafana + AlertManager)
helm install monitoring prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace
# 查看
kubectl get pods -n monitoring
# 访问 Grafana
kubectl port-forward -n monitoring service/monitoring-grafana 3000:80
# 默认账号: admin / prom-operator
# 访问 Prometheus
kubectl port-forward -n monitoring service/monitoring-kube-prometheus-prometheus 9090:9090Grafana Dashboard
安装完成后自带大量 Kubernetes 仪表盘:
- Kubernetes / Compute Resources / Cluster
- Kubernetes / Compute Resources / Namespace (Pods)
- Kubernetes / API Server
- Kubernetes / Nodes
查看 Pod 日志
# 基本日志
kubectl logs my-pod
# 实时追踪
kubectl logs -f my-pod
# 最后 N 行 + 追踪
kubectl logs --tail=50 -f my-pod
# 多容器 Pod
kubectl logs my-pod -c sidecar-container
# 前一个崩溃容器的日志
kubectl logs my-pod --previous
# 带时间戳
kubectl logs --timestamps my-pod
# 按标签过滤
kubectl logs -l app=nginx --all-containers
# 日志导出
kubectl logs my-pod > pod.log查看事件
# 集群事件
kubectl get events
# 按时间排序
kubectl get events --sort-by='.lastTimestamp'
# 实时事件
kubectl get events -w
# 按资源过滤
kubectl get events --field-selector involvedObject.name=my-pod
# 按类型过滤
kubectl get events --field-selector type=Warningetcd 备份与恢复
etcd 存储集群所有状态数据,必须定期备份。
# etcd 备份
# 需要 etcdctl 工具
ETCDCTL_API=3 etcdctl --endpoints=https://127.0.0.1:2379 \
--cacert=/etc/kubernetes/pki/etcd/ca.crt \
--cert=/etc/kubernetes/pki/etcd/server.crt \
--key=/etc/kubernetes/pki/etcd/server.key \
snapshot save /backup/etcd-snapshot.db
# 从备份恢复
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-snapshot.db \
--data-dir=/var/lib/etcd-restoreMinikube 备份(学习环境):
minikube snapshot save
minikube snapshot restore <snapshot-name>Velero 集群备份
Velero 备份集群资源和持久化卷到对象存储:
# 安装 Velero
velero install \
--provider aws \
--bucket k8s-backups \
--backup-location-config region=us-east-1 \
--snapshot-location-config region=us-east-1 \
--use-volume-snapshots=false
# 创建备份
velero backup create daily-backup --ttl 168h
# 查看备份
velero backup get
# 恢复
velero restore create --from-backup daily-backup
# 定时备份
velero schedule create daily --schedule="0 2 * * *" --ttl 168h小结
| 工具 | 用途 |
|---|---|
kubectl top | 实时资源使用 |
| Prometheus + Grafana | 长期存储 + 可视化仪表盘 |
kubectl logs | Pod 日志查看 |
kubectl get events | 集群事件排查 |
| etcd snapshot | 集群状态备份(Minikube: minikube snapshot) |
| Velero | 资源 + PV 全量备份 |
- Metrics Server 提供
kubectl top数据,是 HPA 的前提。 - Prometheus Stack 是 K8s 监控的事实标准。
kubectl logs --previous查看崩溃容器的前一次日志。- etcd 备份是最底层的集群恢复手段。
- Velero 支持按 Namespace 粒度的资源备份和恢复。
上一节:Helm 基础
