首次提交:初始化项目

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

View File

@@ -0,0 +1,225 @@
# K3s 基础设施部署总结
部署日期: 2026-01-30
## 已完成的基础设施组件
### ✅ 1. Helm 包管理工具
- **版本**: v3.20.0
- **位置**: /usr/local/bin/helm
- **配置**: KUBECONFIG 已添加到 ~/.bashrc
### ✅ 2. Longhorn 分布式存储
- **版本**: v1.11.0
- **命名空间**: longhorn-system
- **存储类**: longhorn (默认)
- **S3 备份**: 已配置 MinIO S3 备份
- 备份目标: s3://longhorn-backup@us-east-1/
- 凭证 Secret: longhorn-crypto
- **访问**: http://longhorn.local
### ✅ 3. Redis 中间件
- **版本**: Redis 7 (Alpine)
- **命名空间**: redis
- **存储**: 5Gi Longhorn 卷
- **持久化**: RDB + AOF 双重持久化
- **内存限制**: 2GB
- **访问**: redis.redis.svc.cluster.local:6379
### ✅ 4. PostgreSQL 数据库
- **版本**: PostgreSQL 16.11
- **命名空间**: postgresql
- **存储**: 10Gi Longhorn 卷
- **内存限制**: 2GB
- **访问**: postgresql-service.postgresql.svc.cluster.local:5432
- **凭证**:
- 用户: postgres
- 密码: postgres123
### ✅ 5. Traefik Ingress 控制器
- **状态**: K3s 默认已安装
- **命名空间**: kube-system
- **已配置 Ingress**:
- Longhorn UI: http://longhorn.local
- MinIO API: http://s3.u6.net3w.com
- MinIO Console: http://console.s3.u6.net3w.com
- Grafana: http://grafana.local
- Prometheus: http://prometheus.local
- Alertmanager: http://alertmanager.local
### ✅ 6. Prometheus + Grafana 监控系统
- **命名空间**: monitoring
- **组件**:
- Prometheus: 时间序列数据库 (20Gi 存储, 15天保留)
- Grafana: 可视化仪表板 (5Gi 存储)
- Alertmanager: 告警管理 (5Gi 存储)
- Node Exporter: 节点指标收集
- Kube State Metrics: K8s 资源状态
- **Grafana 凭证**:
- 用户: admin
- 密码: prom-operator
- **访问**:
- Grafana: http://grafana.local
- Prometheus: http://prometheus.local
- Alertmanager: http://alertmanager.local
## 目录结构
```
/home/fei/k3s/009-基础设施/
├── 003-helm/
│ ├── install_helm.sh
│ └── readme.md
├── 004-longhorn/
│ ├── deploy.sh
│ ├── s3-secret.yaml
│ ├── values.yaml
│ ├── readme.md
│ └── 说明.md
├── 005-ingress/
│ ├── deploy-longhorn-ingress.sh
│ ├── longhorn-ingress.yaml
│ └── readme.md
└── 006-monitoring/
├── deploy.sh
├── values.yaml
├── ingress.yaml
└── readme.md
/home/fei/k3s/010-中间件/
├── 001-redis/
│ ├── deploy.sh
│ ├── redis-deployment.yaml
│ └── readme.md
└── 002-postgresql/
├── deploy.sh
├── postgresql-deployment.yaml
└── readme.md
```
## 存储使用情况
| 组件 | 存储大小 | 存储类 |
|------|---------|--------|
| MinIO | 50Gi | local-path |
| Redis | 5Gi | longhorn |
| PostgreSQL | 10Gi | longhorn |
| Prometheus | 20Gi | longhorn |
| Grafana | 5Gi | longhorn |
| Alertmanager | 5Gi | longhorn |
| **总计** | **95Gi** | - |
## 访问地址汇总
需要在 `/etc/hosts` 中添加以下配置(将 `<节点IP>` 替换为实际 IP
```
<节点IP> longhorn.local
<节点IP> grafana.local
<节点IP> prometheus.local
<节点IP> alertmanager.local
<节点IP> s3.u6.net3w.com
<节点IP> console.s3.u6.net3w.com
```
## 快速验证命令
```bash
# 查看所有命名空间的 Pods
kubectl get pods -A
# 查看所有 PVC
kubectl get pvc -A
# 查看所有 Ingress
kubectl get ingress -A
# 查看存储类
kubectl get storageclass
# 测试 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();"
```
## 备份策略
1. **Longhorn 卷备份**:
- 所有持久化数据存储在 Longhorn 卷上
- 可通过 Longhorn UI 创建快照
- 自动备份到 MinIO S3 (s3://longhorn-backup@us-east-1/)
2. **数据库备份**:
- Redis: AOF + RDB 持久化
- PostgreSQL: 可使用 pg_dump 进行逻辑备份
3. **配置备份**:
- 所有配置文件已保存在 `/home/fei/k3s/` 目录
- 建议定期备份此目录
## 下一步建议
1. **安全加固**:
- 修改 PostgreSQL 默认密码
- 配置 TLS/SSL 证书
- 启用 RBAC 权限控制
2. **监控优化**:
- 配置告警通知邮件、Slack、钉钉
- 导入更多 Grafana 仪表板
- 为 Redis 和 PostgreSQL 添加专用监控
3. **高可用**:
- 考虑 Redis 主从复制或 Sentinel
- 考虑 PostgreSQL 主从复制
- 增加 K3s 节点实现多节点高可用
4. **日志收集**:
- 部署 Loki 或 ELK 进行日志聚合
- 配置日志持久化和查询
5. **CI/CD**:
- 部署 GitLab Runner 或 Jenkins
- 配置自动化部署流程
## 维护命令
```bash
# 更新 Helm 仓库
helm repo update
# 升级 Longhorn
helm upgrade longhorn longhorn/longhorn --namespace longhorn-system -f values.yaml
# 升级监控栈
helm upgrade kube-prometheus-stack prometheus-community/kube-prometheus-stack --namespace monitoring -f values.yaml
# 查看 Helm 发布
helm list -A
# 清理未使用的镜像
kubectl get pods -A -o jsonpath='{range .items[*]}{.spec.containers[*].image}{"\n"}{end}' | sort -u
```
## 故障排查
如果遇到问题,请检查:
1. Pod 状态: `kubectl get pods -A`
2. 事件日志: `kubectl get events -A --sort-by='.lastTimestamp'`
3. Pod 日志: `kubectl logs -n <namespace> <pod-name>`
4. 存储状态: `kubectl get pvc -A`
5. Longhorn 卷状态: 访问 http://longhorn.local
## 联系和支持
- Longhorn 文档: https://longhorn.io/docs/
- Prometheus 文档: https://prometheus.io/docs/
- Grafana 文档: https://grafana.com/docs/
- K3s 文档: https://docs.k3s.io/
---
**部署完成!所有基础设施组件已成功运行。** 🎉