首次提交:初始化项目

This commit is contained in:
fei
2026-02-05 00:11:05 +08:00
commit 26eaf8110b
171 changed files with 17105 additions and 0 deletions

344
完整部署总结.md Normal file
View File

@@ -0,0 +1,344 @@
# 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 🚀