1. 先定义学习环境的边界#
Kubernetes 管理容器调度与服务,Prometheus 采集指标。单台 VPS 上的学习集群适合练习 Deployment、Service 和监控,不具备多节点故障容错。小内存套餐可能连控制平面与监控组件都难以同时运行。
先准备受支持系统、足够 CPU/内存/磁盘,安装 kubectl 与一个明确的本地学习集群工具。本文采用 Minikube 的 Docker 驱动思路;正式生产集群需要另外规划网络、存储、证书、备份与升级。
2. 创建集群并确认上下文#
按 Minikube 官方安装步骤准备工具与 Docker,使用普通用户和合适权限,不为了安装方便给未知脚本 root。确认资源预算后启动,例如:
minikube start --driver=docker --cpus=2 --memory=4096
kubectl config current-context
kubectl get nodes
kubectl get pods -A4096 是示例内存预算,主机还需保留系统与其他任务余量。context 必须是刚创建的学习集群,避免把后续命令误发到生产环境。节点 Ready 后再部署应用。
3. 部署一个最小服务并从本地验证#
kubectl create deployment web-demo --image=nginx:stable-alpine
kubectl expose deployment web-demo --port=80 --type=ClusterIP
kubectl rollout status deployment/web-demo
kubectl port-forward service/web-demo 8080:80保持最后一个终端运行,在另一个终端请求 http://127.0.0.1:8080/。这条转发默认用于本地调试,不需要把集群 API 或 NodePort 暴露到全网。正式工作负载还要固定镜像版本、设置资源 requests/limits 和健康探针。
4. 监控先选轻量范围再扩展#
Prometheus 通过 scrape 目标采集时间序列,Grafana 用于展示,Alertmanager 管理告警,它们不是同一个组件。先理解一个指标端点和抓取配置,再决定是否安装完整 kube-prometheus-stack。
使用 Helm 时,从 Prometheus Community 官方 chart 仓库选择确认过的版本,先查看 values 和资源要求,设置保留时间、磁盘容量及访问方式。不要在资源不足的实例上直接照抄大型生产默认配置。
5. 读懂异常状态再处理#
kubectl get pods -A
kubectl describe pod 实际Pod名 -n 实际命名空间
kubectl logs 实际Pod名 -n 实际命名空间 --tail=100
kubectl get events -A --sort-by=.lastTimestampPending 常与资源或调度条件有关,ImagePullBackOff 查镜像和拉取凭据,CrashLoopBackOff 查程序日志与配置。不要通过不断删除 Pod 掩盖根因;控制器会重建它,但不会修复错误配置。
6. 指标可见不等于业务可用#
分别验证监控目标能抓取、查询有数据、告警规则能触发和恢复,以及通知真正送达。监控本身的数据库和配置也需要持久化。不要公开无认证的 Grafana、Prometheus 或 Kubernetes 管理接口。
学习结束可停止集群节省资源;删除集群会删除相关学习数据,先导出需要保留的配置。轻量网站监控可直接看Uptime Kuma 与状态页,不必为单个站点部署完整集群。
完成后检查
生产集群还需要容量、升级、证书、容灾和权限设计,单机演示不能替代这些工作。