345 lines
9.5 KiB
Markdown
345 lines
9.5 KiB
Markdown
# K3s 基础设施完整部署总结
|
||
|
||
部署完成时间: 2026-01-30
|
||
|
||
## ✅ 所有已部署服务
|
||
|
||
### 基础设施层
|
||
|
||
| 服务 | 访问地址 | 说明 |
|
||
|------|---------|------|
|
||
| **Longhorn** | https://longhorn.u6.net3w.com | 分布式块存储管理 |
|
||
| **Grafana** | https://grafana.u6.net3w.com | 监控仪表板 (admin/prom-operator) |
|
||
| **Prometheus** | https://prometheus.u6.net3w.com | 指标监控系统 |
|
||
| **Alertmanager** | https://alertmanager.u6.net3w.com | 告警管理系统 |
|
||
|
||
### 中间件层
|
||
|
||
| 服务 | 访问地址 | 说明 |
|
||
|------|---------|------|
|
||
| **Redis** | redis.redis.svc.cluster.local:6379 | 内存数据库 |
|
||
| **PostgreSQL** | postgresql-service.postgresql.svc.cluster.local:5432 | 关系型数据库 (postgres/postgres123) |
|
||
|
||
### 对象存储
|
||
|
||
| 服务 | 访问地址 | 说明 |
|
||
|------|---------|------|
|
||
| **MinIO S3 API** | https://s3.u6.net3w.com | 对象存储 API |
|
||
| **MinIO Console** | https://console.s3.u6.net3w.com | MinIO 管理控制台 |
|
||
|
||
### 导航页面
|
||
|
||
| 服务 | 访问地址 | 说明 |
|
||
|------|---------|------|
|
||
| **服务导航** | https://dh.u6.net3w.com | 🚀 所有服务的导航页面 |
|
||
|
||
## 架构图
|
||
|
||
```
|
||
Internet (*.u6.net3w.com)
|
||
↓
|
||
Caddy (前端反向代理 + 自动 SSL)
|
||
↓
|
||
Traefik Ingress Controller
|
||
↓
|
||
┌─────────────────────────────────────────────────────┐
|
||
│ Kubernetes Services │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 基础设施层 │
|
||
│ - Longhorn (存储) │
|
||
│ - Prometheus + Grafana (监控) │
|
||
│ - Alertmanager (告警) │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 中间件层 │
|
||
│ - Redis (缓存/队列) │
|
||
│ - PostgreSQL (数据库) │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 对象存储 │
|
||
│ - MinIO (S3 兼容存储) │
|
||
├─────────────────────────────────────────────────────┤
|
||
│ 导航服务 │
|
||
│ - Navigation (服务导航页面) │
|
||
└─────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
## 快速访问
|
||
|
||
### 🏠 从导航页面开始
|
||
|
||
访问 **https://dh.u6.net3w.com** 可以看到所有服务的导航页面,点击即可访问各个服务。
|
||
|
||
### 📊 监控和管理
|
||
|
||
- **Grafana**: https://grafana.u6.net3w.com
|
||
- 用户名: `admin`
|
||
- 密码: `prom-operator`
|
||
- 预装多个监控仪表板
|
||
|
||
- **Longhorn**: https://longhorn.u6.net3w.com
|
||
- 管理所有持久化存储
|
||
- 查看卷状态、创建快照、备份到 S3
|
||
|
||
- **Prometheus**: https://prometheus.u6.net3w.com
|
||
- 查看原始指标数据
|
||
- 执行 PromQL 查询
|
||
|
||
### 🗄️ 数据存储
|
||
|
||
- **MinIO Console**: https://console.s3.u6.net3w.com
|
||
- 管理对象存储桶
|
||
- 上传/下载文件
|
||
|
||
- **Redis**: 内部访问 `redis.redis.svc.cluster.local:6379`
|
||
- **PostgreSQL**: 内部访问 `postgresql-service.postgresql.svc.cluster.local:5432`
|
||
|
||
## 存储配置
|
||
|
||
### Longhorn 卷
|
||
|
||
| 服务 | 存储大小 | 用途 |
|
||
|------|---------|------|
|
||
| Redis | 5Gi | 数据持久化 |
|
||
| PostgreSQL | 10Gi | 数据库文件 |
|
||
| Prometheus | 20Gi | 监控数据 (15天保留) |
|
||
| Grafana | 5Gi | 仪表板配置 |
|
||
| Alertmanager | 5Gi | 告警数据 |
|
||
| MinIO | 50Gi | 对象存储 |
|
||
| **总计** | **95Gi** | - |
|
||
|
||
### S3 备份
|
||
|
||
- **备份目标**: s3://longhorn-backup@us-east-1/
|
||
- **MinIO 端点**: https://s3.u6.net3w.com
|
||
- **自动备份**: Longhorn 可配置自动备份策略
|
||
|
||
## 目录结构
|
||
|
||
```
|
||
/home/fei/k3s/
|
||
├── 009-基础设施/
|
||
│ ├── 003-helm/ # Helm 安装配置
|
||
│ ├── 004-longhorn/ # Longhorn 存储配置
|
||
│ ├── 005-ingress/ # Ingress 和 Caddy 配置
|
||
│ ├── 006-monitoring/ # Prometheus + Grafana
|
||
│ ├── 部署总结.md
|
||
│ └── 域名绑定配置.md
|
||
├── 010-中间件/
|
||
│ ├── 001-redis/ # Redis 配置
|
||
│ ├── 002-postgresql/ # PostgreSQL 配置
|
||
│ └── 003-navigation/ # 导航页面
|
||
└── 011-skills/
|
||
└── 003-s3-specs.md # S3 配置信息
|
||
```
|
||
|
||
## 网络配置
|
||
|
||
### DNS 配置
|
||
|
||
确保以下 DNS 记录已配置:
|
||
|
||
```
|
||
*.u6.net3w.com → <服务器IP>
|
||
```
|
||
|
||
或单独配置:
|
||
|
||
```
|
||
longhorn.u6.net3w.com → <服务器IP>
|
||
grafana.u6.net3w.com → <服务器IP>
|
||
prometheus.u6.net3w.com → <服务器IP>
|
||
alertmanager.u6.net3w.com → <服务器IP>
|
||
s3.u6.net3w.com → <服务器IP>
|
||
console.s3.u6.net3w.com → <服务器IP>
|
||
dh.u6.net3w.com → <服务器IP>
|
||
```
|
||
|
||
### SSL 证书
|
||
|
||
Caddy 自动为所有域名申请和管理 Let's Encrypt SSL 证书。
|
||
|
||
## 常用命令
|
||
|
||
### 查看所有服务状态
|
||
|
||
```bash
|
||
# 查看所有 Pods
|
||
kubectl get pods -A
|
||
|
||
# 查看所有 Ingress
|
||
kubectl get ingress -A
|
||
|
||
# 查看所有 PVC
|
||
kubectl get pvc -A
|
||
|
||
# 查看存储类
|
||
kubectl get storageclass
|
||
```
|
||
|
||
### 测试服务连接
|
||
|
||
```bash
|
||
# 测试 Redis
|
||
kubectl exec -n redis $(kubectl get pod -n redis -l app=redis -o jsonpath='{.items[0].metadata.name}') -- redis-cli ping
|
||
|
||
# 测试 PostgreSQL
|
||
kubectl exec -n postgresql postgresql-0 -- psql -U postgres -c "SELECT version();"
|
||
```
|
||
|
||
### 查看日志
|
||
|
||
```bash
|
||
# Caddy 日志
|
||
kubectl logs -n default -l app=caddy -f
|
||
|
||
# Traefik 日志
|
||
kubectl logs -n kube-system -l app.kubernetes.io/name=traefik -f
|
||
|
||
# Grafana 日志
|
||
kubectl logs -n monitoring -l app.kubernetes.io/name=grafana -f
|
||
```
|
||
|
||
## 备份策略
|
||
|
||
### 1. Longhorn 卷备份
|
||
|
||
- 所有持久化数据存储在 Longhorn 卷上
|
||
- 通过 Longhorn UI 创建快照
|
||
- 自动备份到 MinIO S3
|
||
|
||
### 2. 数据库备份
|
||
|
||
**Redis**:
|
||
```bash
|
||
# 手动触发 RDB 快照
|
||
kubectl exec -n redis $(kubectl get pod -n redis -l app=redis -o jsonpath='{.items[0].metadata.name}') -- redis-cli BGSAVE
|
||
```
|
||
|
||
**PostgreSQL**:
|
||
```bash
|
||
# 导出数据库
|
||
kubectl exec -n postgresql postgresql-0 -- pg_dump -U postgres postgres > backup.sql
|
||
|
||
# 恢复数据库
|
||
cat backup.sql | kubectl exec -i -n postgresql postgresql-0 -- psql -U postgres postgres
|
||
```
|
||
|
||
### 3. 配置备份
|
||
|
||
定期备份 `/home/fei/k3s/` 目录中的所有配置文件。
|
||
|
||
## 安全建议
|
||
|
||
### 立即执行
|
||
|
||
1. ✅ 修改 PostgreSQL 默认密码
|
||
2. ✅ 为敏感服务添加认证(Prometheus、Alertmanager)
|
||
3. ✅ 配置防火墙规则
|
||
4. ✅ 定期更新系统和容器镜像
|
||
|
||
### 可选增强
|
||
|
||
- 配置 RBAC 权限控制
|
||
- 启用 Pod Security Policies
|
||
- 配置网络策略 (NetworkPolicy)
|
||
- 添加入侵检测系统
|
||
|
||
## 监控告警
|
||
|
||
### 配置告警通知
|
||
|
||
编辑 Alertmanager 配置,添加通知渠道:
|
||
|
||
```bash
|
||
kubectl edit secret alertmanager-kube-prometheus-stack-alertmanager -n monitoring
|
||
```
|
||
|
||
支持的通知方式:
|
||
- 邮件
|
||
- Slack
|
||
- 钉钉
|
||
- 企业微信
|
||
- Webhook
|
||
|
||
### 推荐的 Grafana 仪表板
|
||
|
||
1. **Node Exporter Full** (ID: 1860) - 节点详细监控
|
||
2. **Kubernetes Cluster Monitoring** (ID: 7249) - 集群概览
|
||
3. **Longhorn** (ID: 13032) - 存储监控
|
||
4. **Redis** (ID: 11835) - Redis 监控
|
||
5. **PostgreSQL** (ID: 9628) - PostgreSQL 监控
|
||
|
||
## 下一步建议
|
||
|
||
### 短期 (1-2周)
|
||
|
||
1. ✅ 配置告警规则和通知
|
||
2. ✅ 为 Redis 和 PostgreSQL 添加监控
|
||
3. ✅ 测试备份和恢复流程
|
||
4. ✅ 优化资源限制
|
||
|
||
### 中期 (1-2月)
|
||
|
||
1. ✅ 部署日志收集系统 (Loki)
|
||
2. ✅ 配置 CI/CD 流程
|
||
3. ✅ 实现高可用 (多节点)
|
||
4. ✅ 添加更多应用服务
|
||
|
||
### 长期 (3-6月)
|
||
|
||
1. ✅ 实现多集群管理
|
||
2. ✅ 配置灾备方案
|
||
3. ✅ 性能优化和调优
|
||
4. ✅ 安全加固和审计
|
||
|
||
## 故障排查
|
||
|
||
### 服务无法访问
|
||
|
||
1. 检查 Pod 状态: `kubectl get pods -A`
|
||
2. 检查 Ingress: `kubectl get ingress -A`
|
||
3. 检查 Caddy: `kubectl logs -n default -l app=caddy`
|
||
4. 检查 DNS 解析: `nslookup <domain>`
|
||
|
||
### 存储问题
|
||
|
||
1. 检查 PVC: `kubectl get pvc -A`
|
||
2. 访问 Longhorn UI: https://longhorn.u6.net3w.com
|
||
3. 检查节点磁盘空间: `df -h`
|
||
|
||
### 监控数据缺失
|
||
|
||
1. 检查 Prometheus targets: https://prometheus.u6.net3w.com/targets
|
||
2. 检查 ServiceMonitor: `kubectl get servicemonitor -A`
|
||
3. 查看 Prometheus 日志
|
||
|
||
## 文档和资源
|
||
|
||
### 本地文档
|
||
|
||
- 部署总结: `/home/fei/k3s/009-基础设施/部署总结.md`
|
||
- 域名配置: `/home/fei/k3s/009-基础设施/域名绑定配置.md`
|
||
- 各服务 readme: 每个服务目录下的 `readme.md`
|
||
|
||
### 官方文档
|
||
|
||
- K3s: https://docs.k3s.io/
|
||
- Longhorn: https://longhorn.io/docs/
|
||
- Prometheus: https://prometheus.io/docs/
|
||
- Grafana: https://grafana.com/docs/
|
||
|
||
---
|
||
|
||
## 🎉 恭喜!
|
||
|
||
您的 K3s 集群已完整部署,包含:
|
||
|
||
- ✅ 分布式存储 (Longhorn)
|
||
- ✅ 监控系统 (Prometheus + Grafana)
|
||
- ✅ 数据库 (Redis + PostgreSQL)
|
||
- ✅ 对象存储 (MinIO)
|
||
- ✅ 服务导航 (Navigation)
|
||
- ✅ 自动 SSL (Caddy)
|
||
- ✅ Ingress 路由 (Traefik)
|
||
|
||
**访问导航页面开始使用**: https://dh.u6.net3w.com 🚀
|